提问人:Darren Oakey 提问时间:11/6/2023 最后编辑:Ken WhiteDarren Oakey 更新时间:11/6/2023 访问量:47
我可以创建一个结合理论和内联数据的类吗?
can I make a class that combines theory and inlinedata?
问:
我发现有很多次我写了很多测试,我把类似的东西注入其中,并希望简化使用。让我们以布尔值为例 - 但它只是代表了问题。
目前,假设有一堆不同事物的测试可以采用布尔值 - 你最终会写:
[Theory]
[InlineData( false )]
[InlineData( true )]
public async Task TestWhatever( boolean value ) ...
这看起来有点荒谬。我真的很想制作一个名为 TheoryBooleanAttribute 的属性,这样我就可以这样做了
[TheoryBoolean]
public async Task TestWhatever( boolean value ) ...
但我不知道该怎么做。如果我这样做:
[DataDiscoverer("Xunit.Sdk.DataDiscoverer", "xunit.core")]
public class TheoryBooleanAttribute : TheoryAttribute
我收到一条消息,说我需要提供某种类数据,InlineData等 - 我本来以为这是datadiscover属性的重点。如果我这样做:
[XunitTestCaseDiscoverer("Xunit.Sdk.TheoryDiscoverer", "xunit.execution.{Platform}")]
public class TheoryBooleanAttribute : DataAttribute
GUI 不再将其视为测试。- 这似乎是 XunitTestCaseDiscoverAttribute 的重点。 有什么办法可以做到这一点吗?
答:
0赞
Perringaiden
11/6/2023
#1
您的版本提供数据,例如布尔值 True/False。TheoryBooleanAttribute : DataAttribute
因此,您仍然需要在方法上放置一个属性。[Theory]
例如
[Theory]
[TheoryBoolean]
public async Task TestWhatever( boolean value ) ...
AFAIK 没有办法将 a 和 a 组合成一个属性TheoryAttribute
DataAttribute
我很确定将该属性应用于后代是行不通的,因为该属性专门应用于派生自 .反对 a 也是如此,因为它专门应用于派生类。DataDiscoverer
TheoryAttribute
DataAttribute
XunitTestCaseDiscoverer
DataAttribute
FactAttribute
评论
0赞
Darren Oakey
11/10/2023
你的 AFAIK 是问题的重点 - 我正在寻找一种方法将它们组合成一个属性。我确实想出了一种方法——那就是在编译时使用织布机重新探测它们——但我仍然希望找到一些不那么严重的东西
评论