我正在编写用于测试单元测试值的扩展方法。一个天真的例子是:
public static void ShouldBeTrue(this bool value)
{
if(!value)
{
throw new AssertFailedException("Expected true");
}
}
在测试中使用它:
someBool.ShouldBeTrue();
一切正常,除了抛出异常的行将是我在“测试结果”窗口中双击失败的测试时结束的那一行,并且在“测试结果详细信息”中,抛出行显示在错误堆栈跟踪中
有没有办法围绕这个,所以“someBool.ShouldBeTrue();”:
答案 0 :(得分:2)
已经为此编写了一个类库:http://geekswithblogs.net/sdorman/archive/2009/01/31/adding-custom-assertions-to-mstest.aspx
上面的链接引用了一句话:
...作为参考,那些不可用的断言是:
- Assert.IsNaN
- Assert.IsEmpty
- Assert.IsNotEmpty
- Assert.Greater
- Assert.GreaterOrEqual
- Assert.Less
- Assert.LessOrEqual
- Assert.IsAssignableFrom
- Assert.IsNotAssignableFrom
- CollectionAssert.IsEmpty
- CollectionAssert.IsNotEmpty
- StringAssert.AreEqualIgnoringCase
- StringAssert.IsMatch
- FileAssert.AreEqual
- FileAssert.AreNotEqual
...我创建了一个包含所有类的库,除了FileAssert方法和StringAssert.IsMatch。 ...您可以从我的SkyDrive公共文件夹下载该课程:https://skydrive.live.com/?cid=93d618d639ec9651&id=93D618D639EC9651%211283
答案 1 :(得分:1)
我想我找到了答案。您需要做的就是将自定义断言类/方法放入单独的程序集中。如果您愿意,可以在同一解决方案中将其作为单独的项目。