我试图通过带有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);
}
}
答案 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的代码,了解它是如何完成的。
对于打包的应用程序,使用引用的程序集的想法似乎有点奇怪。您的用户需要拥有源并每次重建它,并引用所需的测试程序集。你真的想要吗?
如果你这样做,你需要找到一些方法来获得该参考。如果没有任何常数会一直存在,那就很难做到。