Utilizzando TypeMock Isolator.Swap.AllInstances < T > in un test di carico di Visual Studio?
-
05-07-2019 - |
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?
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.