我使用specflow nunitexecutionreport
命令生成我的测试的html报告,然后将其复制到一个文件夹,其中包含时间戳,报告,生成的html以及成功或失败时拍摄的屏幕截图(所有以编程方式完成)。但文件夹的html报告没有当时的功能文件文本。我想知道如何,对于每个测试,我可以在运行时获取功能文件文本,以便我可以将其复制到该文件夹。
答案 0 :(得分:0)
这不是一个真正的答案,但我需要提供格式化的回复,以便稍后进行编辑
你是否真的需要通过重写方向盘,或者至少你真的需要重写测试运行程序吗?
例如,以下输出来自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 :(得分:0)
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;
}
}