我使用specflow nunitexecutionreport
命令生成我的测试的html报告,并将其复制到文件夹中,其中包含报告,生成的html和成功或失败时所采用的屏幕截图的时间戳(全部以编程方式完成)。但该文件夹的HTML报告没有该时间的功能文件文本。我想知道如何,对于每个测试我可以在运行时获取功能文件文本,所以我可以将它复制到该文件夹。specflow以编程方式获取方案描述
回答
IF您可以保证您使用的是NUnit来运行Specflow测试,然后您可以编写一个NUnitAddin,它可以在运行时获取Specflow输出。我以前为personal project做过这个。
您有一个类
[NUnitAddin(
Name = "RedGreenRefactor.DatCapture.NUnitAddIn",
Description = "Captures both test data and test output so that SpecFlow steps can be correctly consolidated by RedGreenRefactor",
Type=ExtensionType.Core)]
public class Addin : IAddin
{
public bool Install(IExtensionHost host)
{
IExtensionPoint listeners = host.GetExtensionPoint("EventListeners");
if (listeners == null)
return false;
listeners.Install(new NUnitCapture());
return true;
}
}
和你的插件的核心注册看起来像这样
public class NUnitCapture : NUnit.Core.EventListener
{
...
public void TestOutput(NUnit.Core.TestOutput testOutput)
{
var text = testOutput.Text.Trim();
Debug.WriteLine(String.Format("[{0}]", text));
if (text.StartsWith("Given")
|| text.StartsWith("When")
|| text.StartsWith("Then")
|| text.StartsWith("And"))
{
CreateStep(testOutput);
return;
}
if (text.StartsWith("-> done"))
{
SetStepToSuccess();
return;
}
if (text.StartsWith("-> error"))
{
SetStepToFail();
return;
}
if (text.StartsWith("-> No matching step definition found for the step."))
{
SetStepToPending();
return;
}
}
我正在使用nunit,我会尝试这个。 谢谢,我会让你知道的。 –
非常感谢@AlSky –
这是不是一个真正的答案,但我需要给一个格式的响应所以这将需要编辑后
你真的需要这种通过改写轮,或者至少你真的需要重写测试运行器进程?
例如,下面的输出来自TeamCity,其运行NUnit超过了specflow生成的测试。
[20:29:38][MyCode.Tests.dll] MyCode.Tests.MyFeature.Reload
[20:29:38][MyCode.Tests.MyFeature.Reload] Given I have a config reloader
[20:29:38][MyCode.Tests.MyFeature.Reload] -> done: ConfigReloadTests.GivenIHaveAConfigReloader() (0.1s)
[20:29:38][MyCode.Tests.MyFeature.Reload] And a config A that will unload
[20:29:38][MyCode.Tests.MyFeature.Reload] -> done: ConfigReloadTests.GivenAConfig("A") (0.0s)
[20:29:38][MyCode.Tests.MyFeature.Reload] And a config B that wont unload
[20:29:38][MyCode.Tests.MyFeature.Reload] -> done: ConfigReloadTests.GivenAConfigThatWontUnload("B") (0.0s)
[20:29:38][MyCode.Tests.MyFeature.Reload] When I reload my configs
[20:29:38][MyCode.Tests.MyFeature.Reload] -> done: ConfigReloadTests.WhenIReloadMyConfigs() (0.3s)
[20:29:38][MyCode.Tests.MyFeature.Reload] Then I should have 2 instances
[20:29:38][MyCode.Tests.MyFeature.Reload] -> done: ConfigReloadTests.ThenIShouldHaveInstances(2) (0.1s)
现在这是一个标准的开箱即用结果,大概需要十五分钟才能完成。它完全支持,并免费提供。 或者你需要自定义的东西,我从你的问题缺少?
我正在处理的项目需要全部定制 –
使事情变得更加复杂 –
- 1. 有没有办法以编程方式读取宏描述?
- 2. 以编程方式获取解决方案详细信息
- 3. BDD SpecFlow方案
- 4. 以编程方式获取使用概述
- 5. 以编程方式设置构建描述
- 6. 以编程方式禁用“创建排序描述符”列
- 7. Google DocumentsList API - 以编程方式设置描述
- 8. Sitefinity - 以编程方式设置标题和描述
- 9. 重用SpecFlow方案
- 10. 如何以编程方式从已安装的应用程序获取方案?
- 11. 使用反射获取方法描述
- 12. 如何以编程方式激发方法,这是由选择器描述的?
- 13. 如何以编程方式获取layout_weight?
- 14. 以编程方式获取IIS版本
- 15. 以编程方式获取Outlook信息
- 16. 以编程方式从GitHub获取
- 17. 以编程方式获取UIButton
- 18. 以编程方式获取.ASPXAUTH cookie值
- 19. 以编程方式获取表控件
- 20. 以编程方式获取iOS7的IMEI
- 21. 以编程方式从View获取UIImageView。
- 22. 以编程方式获取SignalR版本
- 23. 以编程方式获取ssl证书
- 24. 以编程方式获取Maven构件
- 25. ASP.NET以编程方式获取UserControl VirtualPath
- 26. 以编程方式获取框架ID
- 27. 以编程方式获取C:\ Users
- 28. TFS:以编程方式创建错误并编写描述空间问题
- 29. 以编程方式编辑后端数据,例如Magento中的类别描述
- 30. 以编程方式指定Fogbugz案例
@AlSki我不想给出我所有的功能文件。我想在我的result.html女巫我正在手工建设的C#,原始功能文本 –
好吧,你能解释你想做什么?不是技术问题,但你想要达到什么目标? – AlSki
此外,在生成html和* current *版本的链接文件时记录的内容可能会断开。通过嵌入内容,您可以避免断开连接。 – AlSki