2013-03-11 28 views
9

Per le ultime due ore ho cercato di generare un Test unità per un'applicazione Silverlight.Silverlight 5 VS 2012 Test unità

Un numero di post si riferisce a un "Progetto Test unità Silverlight" che fa parte di Silverlight Toolkit. Ma ho scaricato il toolkit e ancora non ho il Test Project, sembra essere disponibile solo in VS 2010?

Ho aggiunto un progetto di "Silverlight Libreria di classi" e ha aggiunto i riferimenti a:

  1. Microsoft.Silverlight.Testing
  2. Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight

e la seguente TestClass:

using Microsoft.Silverlight.Testing; 
using Microsoft.VisualStudio.TestTools.UnitTesting; 

namespace UnitTesting 
{ 
    [TestClass] 
    public class Class 
    { 

     [TestMethod] 
     public void TestMethod() 
     { 
      .....  
     } 
    } 
} 

Ma c'è nessun test viene scoperto da Visual Studio 2012 Test Explorer. Anche dopo la ricostruzione della soluzione e il riavvio dell'applicazione.

Qualcuno ha qualche idea? È possibile?

+0

Prova di modifica di file e aggiungere csproj seguente tag ' {3AC096D0-A1C2-E12C-1390-A8335801FDAB}; {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}' 'dopo ProjectGuid' – sll

+0

Il progetto non verrà caricato al riavvio di VS :( –

risposta

1

credo che è necessario installare l'adattatore unit test Silverlight per ottenere le prove di presentarsi in Test Explorer

+2

Si è verificata un'eccezione durante il caricamento del test Discoverer "TestDiscoverer". Eccezione: impossibile caricare il file o l'assembly "Microsoft.Silverlight.Testing, Versione = 5.0.5.0, Cultura = neutrale, PublicKeyToken = 31bf3856ad364e35 'o una delle sue dipendenze Il sistema non è in grado di trovare il file specificato –

+1

Gestito per aggiungere il file richiesto a Global Assembly –

+1

Aggiornamento: esecuzione di test ma test non si sta completando anche con Asssert.AreEqual (true, true); –

4

Per completare questa discussione,

Il Silverlight Le DLL si trovano in C: \ Programmi (x86) \ Microsoft SDK \ Silverlight \ v5.0 \ Toolkit \ dec11 \ Testing

Non ho potuto ottenere Resharper 7.1 per eseguire i test, ma this library aiutato. Dovrai estrarre usando 7-zip in modo che le DLL non siano bloccate. Quindi riavviare Visual Studio 2012 e Resharper eseguirà i test dell'unità.

5

Questo legame ha la risposta che ha funzionato per me:

http://social.msdn.microsoft.com/Forums/vstudio/en-US/5e991b0d-8061-4c4e-a17d-82b4abd58d6c/vs-2012-silverlight-unittest

I recommend starting a new Silverlight project and installing the SilverlightToolkit-Testing NuGet package. In your test files, put in usings for Microsoft.Silverlight.Testing and Microsoft.VisualStudio.TestTools.UnitTesting and use regular [TestClass] and [TestMethod] attributes. To run them, you can use the Toolkit test runner by putting RootVisual = UnitTestSystem.CreateTestPage(); in your App.Application_Startup(), use Silverlight Unit Test Adapter (which currently is at v0.0.1 and doesn't really work), or (the best approach by far) install ReSharper and the AgUnit plugin.

1

ero in grado di eseguire alcuni test:

  1. Dato Visual Studio 2012 Professional (con test di corridore).

  2. Creazione libreria di classi con targeting .NET 4.5 con nome come MyProject.Tests.

  3. Riferimento C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\PublicAssemblies\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll o dalla vostra posizione.

  4. Aggiungi test come al solito per .NET 4.5.

  5. Add progetto riferimento al MyProject - progetto mira Silverlight 5.

  6. Aggiungi alcuni test. Costruire.Possono ottenere l'errore di riferimento mancante: Error 12 The type 'System.Xml.Serialization.IXmlSerializable' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Xml, Version=5.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e'

  7. Riferimento C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\Silverlight\v5.0\System.Xml.dll

  8. Costruire e ottenere lo stesso errore. Apri *.csproj e assicurati il ​​percorso dei suggerimenti: xml <Reference Include="System.Xml"> <HintPath>C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\Silverlight\v5.0\System.Xml.dll</HintPath> </Reference>

  9. Prova di esecuzione, ad es. via tasto destro su TestMethod ->Run Tests. Possono ottenere errore: System.IO.FileNotFoundException: Could not load file or assembly 'System.Windows, Version=5.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e' or one of its dependencies. The system cannot find the file specified.WRN: Assembly binding logging is turned OFF. To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1. Note: There is some performance penalty associated with assembly bind failure logging. To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog]. Fix è: <Reference Include="System.Windows"> <HintPath>C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\Silverlight\v5.0\System.Windows.dll</HintPath> </Reference>

Note:

  1. Ricordiamo che Silverlight 5 assemblee sono nello stesso formato di .NET 4.5.
  2. Il test ha esito negativo poiché gli assembly .NET 4.5 sono predefiniti per progetto, è necessario eseguire l'override tramite HintPath. Penso che ci possa essere un altro modo tramite la modifica degli script di MSBuild e/o il reindirizzamento del binding di assembly.
  3. Gli assembly principali .NET vengono caricati da 4.5, se questi differiscono da quelli di Silverlight potrebbero non riuscire. Spero di no.
  4. Le funzionalità che dipendono dal runtime di hosting Silverlight potrebbero non riuscire. Come mostrare la finestra di Silverlight o accedere al DOM HTML. Il che è un buon indicatore del codice refactoring per essere agnostico di Silverlight. Possibile errore:
 


     Test Outcome: Failed 

     Result Message: 
     System.DllNotFoundException: Unable to load DLL 'agcore': The specified module could not be found. (Exception from HRESULT: 0x8007007E) 
     Result StackTrace: 
    at MS.Internal.XcpImports.Application_GetCurrentNative(IntPtr context, IntPtr& obj) 
     at MS.Internal.XcpImports.Application_GetCurrent(IntPtr& pApp) 
     at System.Windows.Application.get_Current() 

 

indica bisogno di caricare ActiveX runtime per SL nel processo.

    versioni
  1. Referencing Silverlight Toolkit di assiemi di prova (con [TestMethod] attributo all'interno) invece di NET uno conduce ad emettere che i test sono visibili, ma non funzionano.