2013-06-14 18 views
8

Mi sembra di avere tutti i tipi di problemi che cercano di fare in modo che NUint funzioni correttamente con una libreria PCL. La mia libreria PCL ha come target .NET 4.5, Silverlight 4 e versioni successive, Windows Phone 7.5, Windows Store, Mono per Android e MonoTouch (gli ultimi due con Xamarin). Tuttavia, quando provo ad aggiungere NUnit al progetto tramite NuGet, sembra che venga aggiunto (nunit.framework viene aggiunto ai riferimenti) ma lo spazio dei nomi NUnit non è disponibile. Se provo e aggiungi un using NUnit.Framework, Visual Studio sottolinea e se provo e costruire ottengo un errore circa il NUnit namespace non può essere trovato con questo avvertimento:Utilizzo di NUnit con PCL

Warning 2 The primary reference "nunit.framework" could not be resolved because it has an indirect dependency on the framework assembly "mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" which could not be resolved in the currently targeted framework. ".NETPortable,Version=v4.0,Profile=Profile104". To resolve this problem, either remove the reference "nunit.framework" or retarget your application to a framework version which contains "mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089". 

Può NUnit lavorare con PCLS? I tutorial mvvm cross sembrano certamente gestirlo.

Ho provato a creare un progetto separato per il test (una normale libreria di classi) e posso aggiungere NUnit a questo, ma poi non riesco a aggiungere un riferimento alla mia libreria PCL (quella che voglio testare), in modo che non aiuta neanche.

Qualche idea?

+2

Se si osserva più da vicino il progetto MvvmCross a cui si fa riferimento, vedrete che il progetto dell'unità di test stesso non è un PCL ma un progetto .NET 4.5. Per quanto ne so, NUnit non può essere referenziato da un progetto PCL poiché NUnit stesso non è un assembly PCL. La strategia dovrebbe piuttosto essere quella di creare un progetto di test unitario specifico per la piattaforma (ad esempio .NET 4, 4.5) che fa riferimento a NUnit e alla libreria PCL sottoposta a test. Se hai ancora problemi, sei sicuro che la libreria PCL abbia come target la piattaforma del tuo progetto di test unitario? –

+2

Come dice Anders, NUnit non supporta la scrittura di test in un assembly PCL. Vedi la mia risposta alla seguente domanda sui test PCL in generale: http://stackoverflow.com/questions/16973411/portable-class-library-testing –

risposta

3

Questo argomento ha difetti, ma lo farò comunque ...

Vai avanti e scrivere ed eseguire il test di unità in una libreria .net 4.5 e fare riferimento la libreria PCL da lì. L'obiettivo dell'unità lo prova per testare la logica. Anche se è vero che alcune cose potrebbero essere diverse per le diverse versioni target di PCL (metodi non implementati ecc.), Sospetto che testare il codice in questo modo riguardi il 99% dei casi.

Inoltre, se si desidera un test "vero" della logica, è necessario eseguire i test dell'unità sui dispositivi che si desidera testare ... e quindi su ciascuna versione del sistema operativo ... e potenzialmente diversa dispositivi con diverse CPU ecc. Quanto lontano vuoi andare?

Hai detto che non è possibile aggiungere un riferimento al PCL dalla libreria di test "normale" ... che tipo di errore ottieni? Ho usato questo approccio per testare la mia logica PCL e funziona come un fascino, forse non è perfetto ma per l'1% dei casi in cui le cose sono diverse sul dispositivo e le cose falliscono ... Ho un cablaggio di eccezione che registra a un server :-)