Domanda

Ho la seguente configurazione di test.

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

Nel metodo Helpers.SetupMocks () sto effettuando una chiamata a Isolator.Swap.AllInstances < T > () .

Funziona alla grande finché non eseguo un test di carico. Non appena configuro un test di carico che eseguirà il metodo Test TypeMock inizia a generare questa eccezione:

  

TypeMock.TypeMockException: *** Impossibile chiamare Swap.AllInstances () più di una volta su un tipo.

Esiste un modo per evitarlo? Ho configurato qualcosa di sbagliato?

È stato utile?

Soluzione

Disclaimer Lavoro a Typemock

Prima nota che lanciamo questa eccezione perché non ha davvero senso falsificare tutte le istanze di un tipo più di una volta e vogliamo far sapere all'utente che probabilmente ha fatto un errore.
Penso che il problema sia che quando si eseguono i test di carico, mstest esegue in parallelo poche istanze della classe di test.
In tal caso, è necessario spostare la chiamata in Isolator.Swap.AllInstances () dall'impostazione della classe ai metodi di test.
Potrebbe funzionare se l'esecuzione di mstest non eseguirà i test in parallelo nella stessa classe. Sfortunatamente sembra che mstest non abbia un argomento da riga di comando per ignorare questo comportamento.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top