通过带有NUnit Engine的Windows窗体应用程序执行NUnit测试

时间:2017-01-04 20:36:19

标签: c# .net nunit nunit-3.0

我试图通过带有NUnit引擎的Windows窗体应用程序执行NUnit测试,但我不明白如何设置我的测试所在的DLL的路径(我已经将DLL包含在参考)。当我点击一个按钮时,我希望测试开始;然而,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);
            }
        }

2 个答案:

答案 0 :(得分: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);
    }

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

答案 1 :(得分:0)

您正在将测试组件设置为gui组件。由于没有测试,NUnit发现无所事事。我想它会在结果中返回错误。

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

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

如果你这样做,你需要找到一些方法来获得该参考。如果没有任何常数会一直存在,那就很难做到。