Использование TypeMock Isolator.Swap.AllInstances < T > в нагрузочном тесте Visual Studio?
-
05-07-2019 - |
Вопрос
У меня есть следующие настройки тестов.
[TestClass,
Isolated]
public class TestClass
{
public TestClass()
{
}
private TestContext testContextInstance;
public TestContext TestContext
{
get { return testContextInstance; }
set { testContextInstance = value; }
}
[ClassInitialize,
Isolated]
public static void InitializeRunState(TestContext testContext)
{
Helpers.SetupMocks();
//do some class init stuff
}
[TestInitialize]
public void InitializeTestState()
{
Helpers.SetupMocks();
}
[TestMethod]
public void Test()
{
//execute test
}
}
В методе Helpers.SetupMocks ()
я вызываю Isolator.Swap.AllInstances < T > ()
.
Это прекрасно работает, пока я не выполняю нагрузочный тест. Как только я настрою нагрузочный тест, который выполнит метод Test
, TypeMock начнет выдавать это исключение:
TypeMock.TypeMockException: *** Невозможно вызывать Swap.AllInstances () более одного раза для типа. Р>
Есть ли способ избежать этого? У меня что-то неправильно настроено?
Решение
Отказ от ответственности, я работаю в Typemock
Сначала обратите внимание, что мы выкидываем это исключение, потому что на самом деле нет смысла подделывать все экземпляры типа более одного раза, и мы хотим, чтобы пользователь знал, что он, вероятно, допустил ошибку.
Я думаю, проблема в том, что при запуске нагрузочных тестов mstest запускает несколько экземпляров тестового класса параллельно.
В этом случае вы должны переместить вызов Isolator.Swap.AllInstances () из настройки класса в методы тестирования.
Это может сработать, если при выполнении mstest тесты не будут выполняться параллельно в одном и том же классе.
К сожалению, похоже, что mstest не имеет аргумента командной строки для переопределения этого поведения. Р>