我在我的测试程序集上运行NUnit控制台,但有时我的NUnit崩溃(我目前正在弄清楚为什么)。当nunit崩溃时,没有创建xml报告,我实际上没有任何测试报告。测试运行时间很长,如果我失去了整个测试运行报告,这是一个糟糕的情况。 有没有办法告诉NUNit写入xml日志文件(每次测试后)。即使这意味着xml文件将不会正确关闭。 我知道可以使用NUnit TestListener。但是有没有一个开关或者不包括自己编写额外代码的东西。NUnit控制台在测试运行期间报告测试结果,每次测试后
3
A
回答
3
您可以使用/labels
命令行开关调用nunit-console
。这会导致它在运行时向控制台写出每个测试的(完全限定)名称,尽管输出不包括测试结果。但是,它会显示哪些测试已成功运行。
唯一的其他选择是你打折的那个,写你自己的EventListener
实施。 The documentation about that interface有点亮,但如果你改变了主意,the NUnit documentation about writing an NUnit add-in assembly应该足以让你开始。
0
首先在不久的将来,NUnit开箱即可提供这种日志记录 - 此功能已被请求 - Write partial results XML as tests happen instead of at the end。
,直到其完成,我们需要编写一些自定义代码,并在案件u使用NUnit的< 3.x中它很简单:
1)你需要创建一个事件监听器实现事件监听接口
2)本接口为测试执行的不同状态提供通知,例如。 RunStarted,RunFinished或TestFinished。所有你需要的是一个与你的案例相关的日志记录的实现。从我的代码片段:
public void RunStarted(string name, int testCount)
{
try
{
_instanceId = Environment.GetEnvironmentVariable("InstanceId");
_buildId = Environment.GetEnvironmentVariable("BuildId");
_browser = Environment.GetEnvironmentVariable("BrowserToTest");
_template = Environment.GetEnvironmentVariable("TemplateToTest");
}
catch { }
}
public void TestFinished(TestResult result)
{
if (result.ResultState == ResultState.Ignored)
{
return;
}
var r = new TestingWorkerData
{
BuildId = _buildId,
InstanceId = _instanceId,
TestName = result.FullName,
Success = result.IsSuccess,
TimeTaken = result.Time.ToString(CultureInfo.InvariantCulture),
Message = result.Message,
StackTrace = result.StackTrace,
Browser = _browser,
Template = _template
};
File.AppendAllLines(@"z:\\results.txt", new[] {JsonConvert.SerializeObject(r)});
}
public class TestingWorkerData
{
public string TestName { get; set; }
public bool Success { get; set; }
public string TimeTaken { get; set; }
public string Message { get; set; }
public string StackTrace { get; set; }
public string InstanceId { get; set; }
public string Browser { get; set; }
public string Template { get; set; }
public string BuildId { get; set; }
}
3)的最后一件事是创建NUnit的插件的:
[NUnitAddin]
public class ProgressReporterNugetAddin : IAddin
{
public bool Install(IExtensionHost host)
{
var listeners = host.GetExtensionPoint("EventListeners");
listeners.Install(new ProgressReporterEventListener());
return true;
}
}
注:有覆盖类似的做法,更漂亮的好文章http://jimmykeen.net/2015/02/28/logging-test-results-with-nunit/。
不幸的是它适用于NUnit < 3.x只有因为NUnit3被大量重写 - 例如。没有EventListener接口了。
相关问题
- 1. Nunit每次运行两次测试
- 2. 多次运行NUnit测试
- 3. 测试结果报告
- 4. C# - NUnit控制台测试生成
- 5. nUnit测试适配器10秒限制:nUnit中的长时间运行测试
- 6. NUnit,TestDriven.Net:使用部分测试类复制测试结果
- 7. NUnit并行运行测试
- 8. 在NUnit下运行调试测试
- 9. 在C#控制台中运行NUnit测试应用程序
- 10. 在Nunit控制台中使用垫片(Microsoft Fakes)运行测试
- 11. 只有当我使用Maven运行测试用例时,TestNG测试结果控制台才为空(测试)
- 12. 将控制台输出添加到NUnit测试结果
- 13. 测试报告
- 14. 制作VS2008测试到NUnit的测试
- 15. TeamCity并运行NUnit测试
- 16. 如何运行NUnit测试?
- 17. 如何运行Nunit测试?
- 18. NAnt未运行NUnit测试
- 19. 指定NUnit测试运行
- 20. Nunit TestFixtureData未运行测试
- 21. 无法运行NUnit测试
- 22. F#运行NUnit测试
- 23. 硒测试报告没有显示所有的测试结果
- 24. 运行Rails多次测试I18n测试
- 25. 量角器 - 每次测试前和每次测试后都运行代码
- 26. nUnit测试中的不同结果 - 运行vs调试
- 27. 在NUnit测试
- 28. Nunit控制台转轮没有运行任何测试
- 29. 获取Nunit测试报告(visual studio)
- 30. Nunit测试报告不公布附件