Pergunta

Eu tenho a seguinte configuração testes.

[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
    }
}

No método Helpers.SetupMocks() Eu estou fazendo uma chamada para Isolator.Swap.AllInstances<T>().

Isso funciona muito bem, enquanto eu não estou executando um teste de carga. Assim eu configurar um teste de carga que vai executar o método Test TypeMock começa a jogar esta exceção:

TypeMock.TypeMockException: *** Não é possível chamar Swap.AllInstances () mais de uma vez em um tipo.

Existe uma maneira de evitar isso? Eu tenho algo configurado errado?

Foi útil?

Solução

Disclaimer Eu trabalho em Typemock

Primeiro nota que lançar essa exceção, porque não há realmente nenhum ponto em fingir todas as instâncias de um tipo mais de uma vez e nós queremos deixar o know usuário que ele provavelmente cometeu um erro.
Acho que o problema é que, quando você executar a carga de testes MSTest corre alguns instâncias da classe de teste em paralelo.
Nesse caso, você deve mover a chamada para Isolator.Swap.AllInstances () a partir da configuração de classe para os métodos de ensaio.
Pode funcionar se MSTest corridas não vai executar os testes em paralelo na mesma classe. Infelizmente, parece que mstest não tem um argumento de linha de comando para substituir esse comportamento.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top