2017-01-04 49 views
0

我试图通过使用NUnit引擎的Windows窗体应用程序执行NUnit测试,但我不明白如何为我的测试所在的DLL设置路径(我已经在引用中包含了DLL)。当我点击一个按钮时,我想要开始测试;然而,NUnit打开,然后立即关闭而无需执行任何操作。以下是我的:使用NUnit引擎通过Windows窗体应用程序执行NUnit测试

namespace ATF.GUI 
{ 
    public partial class ATF_Main : Form 
    { 
     TestPackage package; 
     ITestEngine engine; 

     public ATF_Main() 
     { 
      InitializeComponent(); 
     } 

     private void ATF_Main_Load(object sender, EventArgs e) 
     { 
      string path = Assembly.GetExecutingAssembly().Location; 
      package = new TestPackage(path); 
      package.AddSetting("Working Directory", Environment.CurrentDirectory); 

      // Prepare the engine 
      engine = TestEngineActivator.CreateInstance(); 
     } 

     private void btnStartTests_Click(object sender, EventArgs e) 
     { 
      using (ITestRunner runner = engine.GetRunner(package)) 
      { 
       // Execute the tests 
       XmlNode result = runner.Run(null, TestFilter.Empty); 
      } 
     } 
+0

'path'应该指向包含你的测试的dll –

+0

我明白了,但是怎么样?我试着指向它所在的bin,我仍然无法让NUnit运行测试。 – Mike

+0

提供包含文件名的完整路径。你怎么知道测试是否运行?你检查'result'节点的内容吗? –

回答

1

我从来没有得到真正的答案,但我自己想清楚了。

private void ATF_Main_Load(object sender, EventArgs e) 
    { 
     // Add reference to tests DLL and load it here by name 
     Assembly testAssembly = Assembly.Load("Program.Tests"); 
     package = new TestPackage(testAssembly.Location); 
     package.AddSetting("Working Directory", Environment.CurrentDirectory); 
    } 

如果您有多个测试程序集,还可以将程序集位置添加到列表中。

0

您正在将测试组件设置为您的gui组件。由于它没有测试,所以NUnit找不到任何东西。我想它会在结果中返回一个错误。

不知何故,你的应用程序必须被赋予测试程序集的路径。这可以通过命令行或某种类型的对话。你可以看看nunit3-console或者nunit-gui的代码,看看它是如何完成的。

对于打包的应用程序,使用引用程序集的想法似乎有点奇怪。您的用户需要每次都有源代码并重新构建它,并引用所需的测试程序集。你真的想要吗?

如果你这样做,你需要找到一些方法来获得该参考。很难做到,如果没有任何不变的东西永远存在。

+0

也许我这样做不正确 - 我从来没有从零开始设置NUnit,所以我在这个阶段有点迷路。我的解决方案ATF.GUI和ATF.Tests(一个类库)中有两个项目。 ATF.GUI是我的StartUp项目,我希望那里的按钮能够自动运行ATF.Tests。什么是正确的方法来做到这一点? – Mike

+0

发动机设置为在组件中运行测试,并指定该组件的路径。这个想法是,引擎和跑步者事先不知道测试的位置或者被称为什么,所以他们必须被告知。 – Charlie

+0

你是否已经熟悉NUnit作为一个包通过它自己的控制台运行器或新的gui?如果没有,它将有助于先熟悉。 你能解释你为什么希望跑步者参考测试装配? – Charlie