2013-03-11 19 views
9

Przez ostatnie kilka godzin próbowałem wygenerować test jednostkowy dla aplikacji Silverlight.Testy jednostek Silverlight 5 VS 2012

Liczba postów odnosi się do "Projektu testowego jednostek Silverlight", który jest częścią zestawu narzędzi Silverlight. Ale pobrałem zestaw narzędzi i nadal nie mam Projektu Testowego, wydaje się, że jest on dostępny tylko w VS 2010?

Dodałem projekt "Silverlight Class Library" i dodaje odniesień do:

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

i następnego TestClass:

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

namespace UnitTesting 
{ 
    [TestClass] 
    public class Class 
    { 

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

ale nie nie są testowane przez program Visual Studio 2012 Eksplorator testów. Nawet po odtworzeniu rozwiązania i ponownym uruchomieniu aplikacji.

Ktoś ma jakieś pomysły? Czy to możliwe?

+0

Spróbuj edytować plik csproj i dodać po tagu ' {3AC096D0-A1C2-E12c-1390-A8335801FDAB}; {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}' 'po ProjectGuid' – sll

+0

Projekt nie został załadowany po ponownym uruchomieniu usługi VS :( –

Odpowiedz

1

wierzę, że trzeba zainstalować adapter jednostka testowa Silverlight uzyskać testy, aby pokazać się w Teście Explorer

+2

Wystąpił wyjątek podczas próby ładowania testu "TestDiscoverer" Wyjątek: Nie można załadować pliku lub zespołu "Microsoft.Silverlight.Testing, wersja = 5.0.5.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35 'lub jedna z jego zależności System nie może znaleźć określonego pliku –

+1

Zarządzane w celu dodania wymaganego pliku do globalnego zespołu –

+1

Aktualizacja: Uruchomione testy, ale test nie kończą się nawet z użyciem tylko Asssert.AreEqual (true, true); –

4

Aby zakończyć ten wątek,

Silverlight DLLs znajdują się w C: \ Program Files (x86) \ Microsoft SDK \ Silverlight \ v5.0 \ Toolkit \ dec11 \ Testing

Nie mogłem uruchomić programu Resharper 7.1, aby uruchomić testy, ale pomógł mi this library. Będziesz musiał wyodrębnić używając 7-zip, aby DLLs nie były blokowane. Następnie uruchom ponownie program Visual Studio 2012, a Resharper uruchomi testy jednostkowe.

5

Ten link ma odpowiedzi, który pracował dla mnie:

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

udało mi się przeprowadzić kilka testów:

  1. Biorąc pod Visual Studio 2012 Professional (z testem biegacza).

  2. Tworzenie biblioteki klas docelowych .NET 4.5 o nazwie takiej jak MyProject.Tests.

  3. Numer referencyjny C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\PublicAssemblies\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll lub z podanej lokalizacji.

  4. Dodaj test jak zwykle dla .NET 4.5.

  5. Add Reference projekt MyProject - projekt kierowania Silverlight 5.

  6. Dodaj kilka testów. Budować.Może dostać błąd brakującego odniesienia: 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. Reference C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\Silverlight\v5.0\System.Xml.dll

  8. budowy i uzyskać ten sam błąd. Otwórz *.csproj i upewnij się, że ścieżka podpowiedzi: xml <Reference Include="System.Xml"> <HintPath>C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\Silverlight\v5.0\System.Xml.dll</HintPath> </Reference>

  9. Test uruchomienia, np. klikając prawym przyciskiem myszy na TestMethod ->Run Tests. Może dostać błąd: 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 jest: <Reference Include="System.Windows"> <HintPath>C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\Silverlight\v5.0\System.Windows.dll</HintPath> </Reference>

Uwagi:

  1. Przypomnijmy, że Silverlight 5 zespoły są w tym samym formacie jak .NET 4.5.
  2. Błąd testu, ponieważ zespoły .NET 4.5 są domyślne dla projektu, musimy zastąpić je przez HintPath. Myślę, że może istnieć inny sposób poprzez modyfikację skryptów MSBuild i/lub przekierowywanie powiązania zestawu.
  3. Zespoły jądra .NET są ładowane od wersji 4.5, jeśli różnią się od Silverlight, co może się nie udać. Mam nadzieję, że nie.
  4. Funkcje zależne od środowiska wykonawczego programu Silverlight mogą się nie udać. Jak pokazywanie okna Silverlight lub dostęp do HTML DOM. Co jest dobrym wskaźnikiem dla kodu refaktora, który ma być agnostykiem Silverlight. Możliwy błąd:
 


     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() 

 

wskazuje trzeba ładować ActiveX wykonawczego dla SL w procesie.

    wersje
  1. Odnośniki Silverlight Toolkit zespołów badawczych (z [TestMethod] atrybut wewnątrz) zamiast NET prowadzi się wydawać, że testy są widoczne, ale nie działają.
Powiązane problemy