我曾经在NUNIT中使用过这些,它们真的很有用。有什么想法如何做这样的事情吗?
编辑,代码示例:
bool condition = false;//would be nice not to have this
observable.Subscribe(_ =>
{
if (real test)
condition= true;//Assert.Pass()
});
StartObservable();
Assert.True(condition);//Assert.Fail()
4条答案
按热度按时间ldioqlga1#
该文档包含一个comparison chart,其中包括:
Fail
-xUnit.net替代方法:Assert.True(false, "message")
(It没有显示
Assert.Pass
,我自己也从来没有用过,但我怀疑另一种选择是从测试中返回。当然,如果你想在嵌套方法调用中抛出它,这是没有帮助的。我的 * 怀疑 * 是它在NUnit中不是很常用,因此它没有出现在比较图中。)qc6wkl3g2#
xUnit docs建议的
Assert.Fail("messsage")
替代方案xUnit.net 替代方案:Assert.True(false,“消息”)
有一个缺点-它的输出是
摆脱
不要调用
Assert.True(false, "message")
,而是抛出Xunit.Sdk.XunitException
。例如,建立类似下列的Helper方法:
waxmsbnn3#
只需抛出一个异常来满足这两个要求(退出嵌套循环和缺少的Assert.Fail方法的替代方法)。唯一的问题是没有合适的基本异常(例如TestException)可供使用,以避免收到有关使用基本Exception类的警告,因此更直接的异常(如InvalidOperationException)可能是一个不错的选择。
unguejic4#
另一种获取PassAssert的方法是创建新Assert。
但是,有一个陷阱,因为您只能使用“That”关键字访问该方法。
参考:https://www.meziantou.net/mstest-v2-create-new-asserts.htm