2013-10-15 29 views
19

Sto usando un concetto proof-of-semplice falsi di prova NUnit:Microsoft.Fakes non verrà eseguito in normali test di unità contesti

[Test] 
    public void TestFakes() 
    { 
     using (var ctx = ShimsContext.Create()) 
     { 
      System.Fakes.ShimDateTime.NowGet =() => { return new DateTime(2000, 1, 1); }; 

      Assert.That(DateTime.Now.Year, Is.EqualTo(2000)); 
     } 
    } 

Questo test viene eseguito in Visual Studio Test Explorer, ma doesn' t run in:

  • NUnit GUI
  • console
  • NUnit
  • Il test corridore JetBrains (dotCover O ReSharper)
  • testd Test riven.net corridore

In ognuno di questi, ricevo il seguente errore:

Microsoft.QualityTools.Testing.Fakes.UnitTestIsolation.UnitTestIsolationException : Failed to resolve profiler path from COR_PROFILER_PATH and COR_PROFILER environment variables

Quando rifletto in quell'assemblea, sembra che è alla ricerca di Intellitrace, una caratteristica VS Ultimate-solo - Ho solo installato Premium.

Qualche suggerimento su come ovviare a questo (usiamo il corridore NUnit sui nostri server di build, quindi questo è un bloccante di utilizzare falsi)

+2

Hai provato a impostare le variabili di ambiente che sembra manchi? –

+0

@DanielHilgarth no, perché non so cosa avrei potuto impostare a (impostandolo a stringhe arbitrarie non aiuta, FWIW) – pattermeister

+0

installare Visual Studio 2012 Update 2. È quindi possibile utilizzare MS falsi senza dover avere Ultimate edition, L'edizione premium sarà sufficiente. http://support.microsoft.com/kb/2797912 http://blogs.msdn.com/b/visualstudioalm/archive/2013/02/08/febbraio-ctp-for-visual-studio-update-2.aspx #fakes –

risposta

14

Non credo che si sarà in grado di eseguire MS Falsi base esegue test utilizzando qualsiasi altro framework MS Test.

Credo che il modo in cui MS Fakes funziona causi problemi ai corridori test come NUnit. Proprio perché questo è il caso, non lo so, dal momento che altri framework mocking come TypeMock funzionano bene in NUnit, ecc. Ma c'è qualcosa di specifico in MS Fakes che rende più difficile (se non impossibile) eseguire con qualcosa di diverso da Test MS. Questa è la mia teoria comunque.

A meno che gli autori di NUnit, xUnit, ecc aggiungano il supporto per MS Fakes (o ci sia una soluzione furba), penso che dovrai seguire MS Test.

EDIT:

Sembra che l'ultima versione di NCrunch v2.5 non funziona con MS falsi. Ho provato la versione beta durante lo sviluppo e posso confermare che i test MS Fake sono stati eseguiti senza errori utilizzando NCrunch.

+4

Ho accettato la risposta (grazie :-) e ho trovato il motivo: [Gli spessori richiedono una strumentazione speciale all'avvio di un processo. Senza questa strumentazione, tutti i tentativi di shim di qualsiasi metodo o proprietà lanciano ShimNotSupportedException. Nell'aggiornamento 2 abbiamo spostato il controllo della strumentazione in avanti, in modo che avvenga al momento della creazione di ShimsContext. Abbiamo apportato questa modifica per semplificare la risoluzione dei problemi relativi alla strumentazione di Shim e l'eccezione ShimNotSupportedException che potrebbero produrre.] (Http://connect.microsoft.com/VisualStudio/feedback/details/785411/cannot-debug-unit-tests-with-shims- in-vs2012-w-update2) – pattermeister

+0

Ace, grazie per il collegamento. –

5

Falsi funziona solo con Visual Studio Test Runner (AKA VStest.Console.exe). Anche il precedente Microsoft MSTest runner doesn't support it.

0

Credo che la vostra risposta è quella di utilizzare uno dei seguenti comandi:

VSTest.Console.exe UnitTests.dll /UseVsixExtensions 

VSTest.Console.exe UnitTests.dll /TestAdapterPath:%LocalAppData%\Microsoft\VisualStudio\12.0\Extensions\<nunit test adapter installation folder> 

Questi comandi funzioneranno bene su macchine dev. Nel caso in cui si desideri eseguire i test unitari sul server di build, copiare la cartella dell'adattatore di test nunit per creare il server e menzionare tale percorso.

Problemi correlati