我想使用NUnit在我的插件中運行單元測試,但它需要在我的應用程序的上下文中運行。爲了解決這個問題,我試圖開發一個運行NUnit的插件,它將在應用程序的上下文中執行我的測試。如何從我的代碼運行NUnit
我沒有找到關於這個問題的一個特定的文件,所以我在這裏和那裏挖了一條信息,我想出了下面的一段代碼(類似於一個我發現這裏的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());
}
}
結果變量說「沒有TestFixture」,雖然我知道它確實存在。事實上,我的測試文件包含兩個測試。
使用另一種方法,我發現,這是由下面的代碼概括:
TestSuiteBuilder builder = new TestSuiteBuilder();
TestSuite testSuite = builder.Build(package);
// Run tests
TestResult result = testSuite.Run(new NullListener(), NUnit.Core.TestFilter.Empty);
我看到NUnit的數據結構,只有1測試和我有同樣的錯誤。
爲了完整起見,我使用了最新版本的nunit,它是2.5.5.10112。
有誰知道我錯過了什麼? 示例代碼將不勝感激。 我的測試類是:
[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);
}
}
你可以建立一個小的,但是完整的程序+插件,並告訴我們的代碼,即複製的問題?或者,至少,你可以發佈你想要測試的插件的類文件嗎? – 2010-05-09 18:15:25
難道你的插件是用不同的NUnit版本編譯的?我認爲這不是來自您在問題中所寫的內容,而是......它會使屬性類型不兼容。 – 2010-05-09 18:19:44
如果我使用Console.WriteLine(loc),它將打印控制檯exe的名稱。我試圖加載類的DLL,我得到了「訪問被拒絕」。然後當我做Console.WriteLine(result.ResultState)它打印「不確定」。你如何得到「沒有textfixture」的消息?另外你如何檢查它是否事實上加載你的測試DLL。我可能會忽略這裏顯而易見的東西。 – 2010-05-09 20:24:45