我有一些测试取决于某件事的真实性(可能会发生互联网访问,但这并不重要,我也不想讨论这种情况的细节)。
我可以很容易地编写一个静态助手方法,该方法将测试(无参数)条件,并在Assert.Inconclusive("Explanatory Message")
/ true
时调用false
。然后在每个有此要求的Test
的开头调用它。
但如果可能,我想将其作为Attribute
。
有一个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
,那么我可能会接受!我进行了一些测试,这些测试都取决于某件事的真实性(可能会发生互联网访问,但这并不重要,我也不想讨论这种情况的细节)。我可以非常...