2010-08-23 91 views
2

我使用VS 2008进行单元测试。即使我的代码调用Assert.Fail不会失败测试?

Assert.Fail("some message"); 

Test passess ??

甚至

Assert.IsTrue(false);这也通过测试。

这怎么可能。我期待测试失败。我想迫使它失败。

请帮忙!

+4

也许你正在测试的代码非常好,它不会失败!我希望我知道如何编写这样的代码,我一直在吹捧单元测试。 – 2010-08-23 12:38:48

+0

确保您正在执行Debug Build? – StuartLC 2010-08-23 12:38:48

+3

查克诺里斯在行动:) – 2010-08-23 12:39:27

回答

0

您是否使用.NET内置的Assert类?如果是这样,我怀疑TRACE没有定义。

+0

如何定义跟踪。 – 2010-08-24 04:28:27

5

也许你在捕捉测试代码中的异常。 Assert类使用异常来使测试失败,所以如果你正在捕获它,测试就会通过。

请粘贴以获得更准确的答案。

+0

这也是我的猜测 - AssertFailedException FWIW – 2010-08-23 19:53:54

0

有时,当我点击“运行测试”时,我已经看到测试引擎在发布配置中构建,但是继续对较早的Debug配置构建运行测试。我会在VS2008测试引擎中调用这个错误。无论如何,请尝试清理您的调试和释放文件夹并再次运行它。

0

如果不知道更多关于你在做什么的事情,我不能确定,但​​听起来你正在期待.NET类像NUnit类一样工作 - 不能确定 - 但如果你是,那永远不会工作。

.NET类只有在定义了Trace的情况下才起作用(查看Project Properties,单击Build选项卡,然后单击“Define TRACE constant”)。 - 但是对于单元测试来说这没有什么帮助 - 这些类不会抛出异常或者单元测试失败......他们弹出消息框供订阅“稍后调试”的口头禅。

如果你想Assert.Fail失败单元测试你需要一个单元测试框架,它提供了一个这样做的类(和NUnit一样)。请告诉我们您正在使用哪种测试框架(或者不使用?),如果您仍然遇到问题,我们可以帮助您多一点。