sof*_*ear 5 c# xunit specflow xunit2
不幸的是,我有一个 Specflow 测试在本地通过,但它在 VSO Build vNext 服务器上失败了,我真的需要在测试运行期间查看详细信息,以便弄清楚发生了什么。
但是我正在努力尝试ITestOutputHelper像这样注入Specflow 绑定
public SomeSteps(ITestOutputHelper outputHelper)
但 Specflow 抱怨消息
BoDi.ObjectContainerException Interface cannot be resolved: Xunit.Abstractions.ITestOutputHelper (resolution path: ...)
在 Specflow 测试期间如何查看日志和查看输出?
这是我能想到的最好的,它并不理想,但它确实实现了你想要的。
您创建一个新类来实现生成的 xunit 类。在我的示例中,生成的类称为YourNormalFeatureClass
public class SpecialTest : YourNormalFeatureClass
{
private Xunit.Abstractions.ITestOutputHelper helper;
public SpecialTest(ITestOutputHelper helper) : base()
{
this.helper = helper;
}
public override void ScenarioSetup(ScenarioInfo scenarioInfo)
{
base.ScenarioSetup(scenarioInfo);
// you'd want a better way to keep track of this string
TechTalk.SpecFlow.TestRunnerManager.GetTestRunner().ScenarioContext.Set(this.helper, "helper");
}
}
Run Code Online (Sandbox Code Playgroud)
现在,您可以ITestOutputHelper通过以下方式从步骤文件中访问 XUnit
var helper = this._scenarioContext.Get<Xunit.Abstractions.ITestOutputHelper>("helper");
helper.WriteLine("output from within the steps file that will be written to xunit!");
Run Code Online (Sandbox Code Playgroud)
您需要对该helper变量采取防御措施,以确保您不会得到NullReferenceException任何
这样做的缺点是,您现在拥有同一测试的 2 个副本,因为您继承了旧测试。SpecialTest所以在这种情况下,您有来自和 的测试YourNormalFeatureClass。这意味着您不需要运行YourNormalFeatureClass测试而只运行SpecialTest测试。
如果 SpecFlow 允许您自定义代码生成过程,所有这些问题都可以轻松解决。这样您就可以ITestOutputHelper通过生成的代码公开。步骤内的消耗量是相同的。
| 归档时间: |
|
| 查看次数: |
2812 次 |
| 最近记录: |