使用 NUnit 引擎通过 Windows 表单应用程序执行 NUnit 测试
Executing NUnit tests through a Windows Form application with NUnit Engine
我正在尝试通过带有 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);
}
}
您正在将测试程序集设置为您的 gui 程序集。因为它没有测试,所以 NUnit 发现无事可做。我想 returns 结果有误。
不知何故,必须为您的应用程序提供测试程序集的路径。这可以通过命令行或某种对话框来实现。您可以查看 nunit3-console 或 nunit-gui 的代码,看看它是如何完成的。
对于打包的应用程序,您使用引用程序集的想法似乎有点奇怪。您的用户将需要拥有源代码并每次都重建它,引用所需的测试程序集。你真的想要那个吗?
如果你这样做,你将需要找到一些方法来获取该参考。没有什么不变的东西是很难做到的。
我从来没有得到真正的答案,但我自己想出来了。
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);
}
如果您有多个测试程序集,您还可以将程序集位置添加到列表中。
我正在尝试通过带有 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);
}
}
您正在将测试程序集设置为您的 gui 程序集。因为它没有测试,所以 NUnit 发现无事可做。我想 returns 结果有误。
不知何故,必须为您的应用程序提供测试程序集的路径。这可以通过命令行或某种对话框来实现。您可以查看 nunit3-console 或 nunit-gui 的代码,看看它是如何完成的。
对于打包的应用程序,您使用引用程序集的想法似乎有点奇怪。您的用户将需要拥有源代码并每次都重建它,引用所需的测试程序集。你真的想要那个吗?
如果你这样做,你将需要找到一些方法来获取该参考。没有什么不变的东西是很难做到的。
我从来没有得到真正的答案,但我自己想出来了。
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);
}
如果您有多个测试程序集,您还可以将程序集位置添加到列表中。