MsTest - выполнение метода перед каждым тестом в блоке

Вы можете добавить пользовательские поля в унаследованный процесс. Вы можете определить пул допустимых значений для нового поля. Шаги для настройки типов рабочих элементов здесь .

34
задан Matthew Murdoch 5 July 2011 в 10:07
поделиться

4 ответа

Я не уверен, что эта функция возможна в MsTest из поля как в других средах тестирования (например, MbUnit).

, Если я должен использовать MsTest, тогда я решаю это путем определения абстрактного класса TestBase с [TestInitialize] атрибут и каждый тест, которому нужно это поведение, происходит из этого базового класса. В Вашем случае каждый тестовый класс в Вашем блоке должен наследоваться этой основе...

И существует, вероятно, другое решение, можно сделать пользовательский тестовый атрибут - но я не попробовал это еще...:)

15
ответ дан nihique 27 November 2019 в 16:13
поделиться

[TestInitialize()] то, в чем Вы нуждаетесь.

private string dir;

[TestInitialize()]
public void Startup()
{
    dir = Path.GetTempFileName();
    MakeDirectory(ssDir);
}

[TestCleanup()]
public void Cleanup()
{
    ss = null;
    Directory.SetCurrentDirectory(Path.GetTempPath());

    setAttributesNormal(new DirectoryInfo(ssDir));
    Directory.Delete(ssDir, true);
}


[TestMethod]
public void TestAddFile()
{
    File.WriteAllText(dir + "a", "This is a file");
    ss.AddFile("a");
    ...
}

[TestMethod]
public void TestAddFolder()
{
    ss.CreateFolder("a/");
    ...
}

Это дает новый случайный временный путь для каждого теста и удаляет его, когда он сделан. Можно проверить это путем выполнения его в отладке и рассмотрения переменной dir для каждого тестового сценария.

61
ответ дан Lasse Christiansen 27 November 2019 в 16:13
поделиться

Хорошо разве MSTest не является инстанцированием класса для каждого теста? Это было моим пониманием его. В таком случае вообще Вы звоните от своего конструктора, код инициализации (на тест по определению).

РЕДАКТИРОВАНИЕ: Если это не работает (который я все еще думаю, что это должно, потому что MSTest должен удостовериться, что отдельные выполнения метода тестирования изолируются), тогда TestInitialize, Ваш атрибут. По тому, как лучшее сравнение модульного теста доступно в Ссылка на Codeplex

1
ответ дан Microtechie 27 November 2019 в 16:13
поделиться

Я думаю, что Вы ищете эти ClassInitialize атрибут.

0
ответ дан Andrew Hare 27 November 2019 в 16:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: