【问题标题】:nunit assertexception when debugging调试时nunit断言异常
【发布时间】:2012-08-15 19:04:03
【问题描述】:

这是一个简单的问题,我遇到了一个场景,让我想到了我调试 NUnit 测试的方式。

我有一个类似的课程

public class SomeClass {
   public static bool SomeMethod(){
      return true;
   }
}

现在我有一个像这样的 NUnit 测试

[TestFixture]
public class UnitTests
{
   [Test]
   public void TestOne()
   {
      var retval = SomeClass.SomeMethod();
      Assert.IsFalse(retval, "Test Failed"); 
   }
}

当我在 Debug 中运行测试时,我得到了这个异常

我的一部分是说它应该是这样的,因为 NUnit 通常会将此异常捕获为失败,而我的另一部分是说不,这里不应该有异常,测试应该失败?

【问题讨论】:

    标签: c# nunit testdriven.net


    【解决方案1】:

    使用 Assert.IsFalse 预期为 False。 您可以使用Assert.IsTrueAssert.AreEqual(true, retval)

    来自MSDN

    Assert.IsFalse 方法 - 验证指定条件是否为假。

    【讨论】:

    • 这是一个捕获异常的测试用例,这个案例是我可以演示异常的最简单方法
    • Hmm.. 如果您遇到异常,它会将测试标记为失败。这就是 Assert 的工作方式,还是我现在误解了你?
    • 哦,好的。那么当使用 Assert.IFalse(true) 时,这会产生一个异常,这不会让你继续。这是设计使然,如果抛出异常,测试将被标记为失败。 MSTest 和我所知道的所有测试框架都是一样的。但我不太明白你的问题。你想要一个 Assert.ExceptionIsThrown() 还是类似的东西?或者只是解释为什么在调试器中看到错误?
    • Here 是关于Assert.IsFalse 等的NUnit 文档的链接。当Assert 未满足时,NUnit 总是抛出AssertionException。那么应该由你的测试运行者来处理这个异常。
    • 感谢乔纳斯,我只是找不到为什么抛出异常,正如我在问题中所说的那样,我怀疑这是它的工作方式,但有疑问。感谢您的回答,您已经解决了我的问题
    【解决方案2】:

    您是否在 VS 中运行此 Nunit 测试?尝试在 VS 之外通过 Nunit 测试运行程序编译和运行您的测试。

    如果您想在 VS 中运行,请尝试使用 Resharper、TestDriven.NET 等插件。

    也请看这里: How do I run NUnit in debug mode from Visual Studio?

    【讨论】:

    • 我在 VS 2010 中运行我有 Resharper,现在正在查看您的链接,谢谢
    • 链接非常好,不幸的是不能解决我的问题
    猜你喜欢
    • 2013-03-16
    • 2019-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多