Chciałbym użyć NUnit do uruchamiania testów jednostkowych w mojej wtyczce, ale musi być uruchamiany w kontekście mojej aplikacji. Aby rozwiązać ten problem, starałem się opracować wtyczkę, która uruchamia NUnit, która z kolei wykona moje testy w kontekście aplikacji.Jak uruchomić NUnit z mojego kodu
nie znalazłem konkretnej dokumentacji na ten temat, więc wykopał kawałek informacji tu i tam i wyszedłem z poniższego fragmentu kodu (który jest podobny do jednego znalazłem tutaj w StackOverflow):
public static void Main()
{
SimpleTestRunner runner = new SimpleTestRunner();
TestPackage package = new TestPackage("Test");
string loc = Assembly.GetExecutingAssembly().Location
package.Assemblies.Add(loc);
if(runner.Load(package))
{
TestResult result = runner.Run(new NullListener());
}
}
Zmienna wyniku mówi "nie ma TestFixture", chociaż wiem na pewno, że tam jest. W rzeczywistości mój plik testowy zawiera dwa testy.
Używanie innego podejścia znalazłem, która jest streszczona przez następujący kod:
TestSuiteBuilder builder = new TestSuiteBuilder();
TestSuite testSuite = builder.Build(package);
// Run tests
TestResult result = testSuite.Run(new NullListener(), NUnit.Core.TestFilter.Empty);
widziałem NUnit struktur danych z tylko 1 badanie i miałem ten sam błąd.
Dla większej kompletności używam najnowszej wersji nunit, która jest 2.5.5.10112.
Czy ktoś wie, czego mi brakuje? Kod przykładowy byłby doceniony. Moja Klasa testu jest:
[TestFixture]
public class UnitTests
{
public UnitTests()
{
}
[Test]
public void TestEqual()
{
long a = 10;
long b = 10;
Assert.AreEqual(a, b);
}
[Test]
public void TestNotEqual()
{
long a = 10;
long b = 11;
Assert.AreNotEqual(a, b);
}
}
można zbudować mały, ale kompletny program + wtyczki i pokazać nam kod, który replikuje problem? A może możesz opublikować plik klasy swojej wtyczki, którą próbujesz przetestować? –
Czy to możliwe, że twoja wtyczka jest skompilowana z inną wersją NUnit? Rozumiem, że nie jest to z tego, co napisałeś w pytaniu, ale nadal ... spowodowałoby to, że typy atrybutów byłyby niezgodne. –
jeśli zrobię Console.WriteLine (loc), wypisze nazwę konsoli exe. Próbowałem załadować bibliotekę klasy i dostałem "Access is denied". Następnie, gdy robię Console.WriteLine (result.ResultState), drukuje "Inconclusive". W jaki sposób otrzymujesz komunikat "nie ma textfixture"?Również w jaki sposób sprawdzić, czy to faktycznie ładowanie biblioteki testowej. Być może brakuje mi tu czegoś oczywistego. –