Sto lavorando in un'applicazione che è principalmente single-thread, singolo utente. Ci sono alcuni thread di lavoro qua e là, e usano solo oggetti e classi thread safe. I test unitari stanno effettivamente testando quelli con più thread (creati esplicitamente per i test) e testano bene.Esiste un modo per eseguire i test unitari in sequenza con MSTests?
I test unitari VSTS sicuro durante il test oggetti business e sottosistemi che non è thread-safe. Va bene per loro non essere thread-safe, questo è il modo in cui l'applicazione li usa.
Ma il 'un thread per TestMethod' approccio di test MS ci uccide. Ho dovuto implementare blocchi di oggetti in molte classi di test di unità solo per garantire che i test vengano eseguiti uno dopo l'altro (non mi interessa davvero l'ordine, ma non posso avere due metodi di test che colpiscono lo stesso oggetto a lo stesso tempo).
Il codice simile a questo:
[TestClass]
public class TestSomeObject
{
static object turnStile = new object();
...
[TestMethod]
public void T01_TestThis()
{
lock(turnStile)
{
.. actual test code
}
}
[TestMethod]
public void T02_TestThat()
{
lock(turnStile)
{
-- actual test code
}
}
}
C'è un/modo migliore più elegante per fare il test in sequenza?
quindi sembra che tu stia riutilizzando un'istanza di qualche oggetto in tutti i tuoi test? – BlackTigerX
Sì, in sostanza. A volte è il database, a volte è un singleton - usato come è nell'applicazione –
dal momento che tu affermi che è * unit-test * dal tuo tag, dovresti simulare/stubare le tue dipendenze, specialmente le dipendenze che non sono thread safe – mxmissile