NUnit属性,用于模拟基于条件的断言,包括自定义消息文本在内

问题描述 投票:1回答:1

我有一些测试取决于某件事的真实性(可能会发生互联网访问,但这并不重要,我也不想讨论这种情况的细节)。

我可以很容易地编写一个静态助手方法,该方法将测试(无参数)条件,并在Assert.Inconclusive("Explanatory Message") / true时调用false。然后在每个有此要求的Test的开头调用它。

但如果可能,我想将其作为Attribute


详细说明,如何在NUnit中实现?

到目前为止我已经尝试过:

有一个IApplyToTest interface,由NUnit公开,我可以将其实现为Attribute,并允许我连接到TestRunner,但是我不能让它做我想做的事情:(

该接口使我可以访问IApplyToTest对象。

如果我打电话:

NUnit.Framework.Internal.Test

然后我得到相当于test.RunState = RunState.NotRunnable;的东西。

同样地,Assert.Fail("")RunState.Skipped给我了RunState.Ignored的等效物。

但是这些都没有在测试上设置消息,并且没有Assert.Ignore("")或等效的字符(我可以看到)。>>

有一个test.Message = "foo";,它[[确实

设置了一条消息,但这等效于test.MakeInvalid("Foo")我发现了一些看起来很有前途的东西:

Assert.Fail("Foo")

但是那似乎什么都没有[做];测试通过了:((我寻找var result = test.MakeTestResult();
result.SetResult(ResultState.Inconclusive, "Custom Message text");
方法,以防需要将结果对象“附加”到测试中?但是什么也没做。

感觉这应该是可行的,但是我还不太清楚如何使它们一起发挥作用。

如果有人甚至可以告诉我如何到达test.SetAsCurrentResult(result) + Skipped,那么我可能会接受!

我进行了一些测试,这些测试都取决于某件事的真实性(可能会发生互联网访问,但这并不重要,我也不想讨论这种情况的细节)。我可以非常...

attributes nunit custom-attributes
1个回答
0
投票
这将是对您问题的最简单答案。
© www.soinside.com 2019 - 2024. All rights reserved.