2010-01-19 13 views
5

Ho appena scoperto che stavo ottenendo il doppio del numero di test eseguiti che avrei dovuto ottenere. L'ho scoperto quando si è rotto un test e ho avuto due errori di test identici. Stessa prova, stesso tutto. Mi sono confuso, ma sono riuscito a ridurlo a una certa classe di test che era una lezione parziale.NUnit, TestDriven.Net: risultati dei test duplicati con classi di test parziali

Il motivo per cui era una lezione parziale era che avevo diviso una classe di test in due, solo per renderla un po 'più pulita. La classe sottoposta a test aveva un certo metodo che richiedeva una lunga serie di test e pensavo che sarebbe stato più pulito averli in un file separato. Ma dal momento che c'erano uno o due metodi di helper utilizzati, ho pensato di rendere la classe parzializzata in modo tale che entrambi i file avessero ancora accesso a quei metodi.

Il framework di test è NUnit ei test sono stati eseguiti utilizzando TestDriven.Net. Ha eseguito i test sia all'interno di un singolo metodo di test (riportati due test passati anziché uno), sulla classe (ottenuto il doppio del numero di test passati) e sull'intero progetto di test.

Gestito per risolvere il problema rendendo le classi non parziali e semplicemente duplicando quei piccoli metodi di supporto (potrebbero spostarli in una classe di helper separata o qualcosa in seguito).

Ora ... perché diavolo sta succedendo? Pensavo che le lezioni parziali fossero compilate in una singola classe? Si tratta di un problema con classi parziali in generale, NUnit, Test-Driven.net o qualcosa di completamente diverso?

risposta

2

Probabilmente si inserisce l'attributo [TestFixture] in entrambi i file della classe parziale. Ciò causerà l'emissione di TestFixture due volte nella definizione della classe IL e NUnit eseguirà lo stesso codice di prova due volte. Dovresti aggiungere solo [TestFixture] in uno dei file per la tua classe parziale.

+0

Ooooh. Questo potrebbe avere qualcosa a che fare con questo sì. Ma perché l'attributo 'TestFixture' può essere aggiunto due volte a una classe? Questo non ha senso ... o è una ragione per cui sia possibile? – Svish

+0

È ora necessario testarlo e rimuovere l'attributo 'TestFixture' da una delle classi parziali ha risolto il problema :) – Svish

Problemi correlati