我不熟悉自动化并使用框架,他们已经重命名/定制了xunit测试的Fact和Theory属性。好吧,他们只通过失败,我也想运行警告。所以我遇到了#34; Skip.If()"使用xunit.SkippableFact nuget包。这需要我将属性[SkippableFact]或[SkippableTheory]添加到单元测试中,以便用" skip.if()"显示警告。如果我没有,只是添加标准[事实] [理论],它会显示一个我不想要的红色故障。这些只是冒烟测试,所以如果测试无法运行,我可以收到警告。请参阅我之前的帖子,了解我为什么要使用xunit.SkippableFact。
Stopping a test in C# visual studio if no data exist with smoke test
所以我的问题是我希望能够使用重命名/自定义事实/理论属性知道使用[SkippableFact]或只是基于TraitAttribute或其他东西的普通[事实]。我已经尝试重做构造函数并查看XunitTestCaseDiscoverer,但是由于我的知识有限而没有成功。
第一个例子是我们如何利用事实重命名和自定义,如果skip.if错误则抛出失败的测试。第二个是标准的xunit命名,与第一个命令相同,也会引发失败。第三个给了我想要的东西,这是一个警告,但我想以某种方式将[SkippableFact]合并到第一个,因为你不能有多个Fact / Theory属性。
提前致谢。
[UI, Scenario("Example"), Tags(TestScope.Smoke,TestScope.Skippable, Priority.One)]
[Evaluate("Example")]
public async Task ExampleTest()
{
skip.if(Data=0,"No Data to run smoke test"//This throws failed result
//for test
}
[Fact]
public async Task ExampleTest()
{
skip.if(Data=0,"No Data to run smoke test"//This throws failed result
//for test
}
[SkippableFact]
public async Task ExampleTest()
{
skip.if(Data=0,"No Data to run smoke test"//This throws warning
//result for test which is what I want
}
答案 0 :(得分:0)
嘿,这就是我的所作所为:
public class MultiFact : FactAttribute
{
public MultiFact(params Type[] types)
{
var result = types.Select(Activator.CreateInstance).Cast<FactAttribute>().ToList();
if (result.Any(it => Text.IsNotBlank(it.Skip)))
{
Skip = string.Join(", ", result.Where(it => Text.IsNotBlank(it.Skip)).Select(it => it.Skip));
}
}
}
用法如下:
[MultiFact(typeof(OnlyWhenSomeServiceAvailable), typeof(GuiCheck))]
其中OnlyWhenSomeServiceAvailable
和GuiCheck
也从FactAttribute
继承。