【问题标题】:Unit testing for method which have void return type [duplicate]具有 void 返回类型的方法的单元测试 [重复]
【发布时间】:2014-04-16 15:19:06
【问题描述】:

作为单元测试的初学者。我观察到的每个示例都比较了测试方法的输出 有期望值

 Assert(expected,actual);

我无法理解如果方法没有任何返回类型,那么我无法在单元测试中测试这些方法。 意味着如果我必须编写单元测试,那么我们必须编写这样一个返回类型不是 void 的方法。

【问题讨论】:

    标签: unit-testing c#-4.0


    【解决方案1】:

    信不信由你,您仍然可以测试很多东西,例如检查是否引发异常:

    Assert.DoesNotThrow(() => MyMethod(validParametersHere));
    

    您可以使用ExpectedExceptionAssert.ThrowsAssert.Catch 来测试负面场景:

    Assert.Throws<InvalidOperationException>(() => MyMethod(invalidParametersHere));
    

    大多数单元测试框架还允许您测量方法所花费的时间是否在界限内(例如 NUnit 的 TimeOutAttribute)。

    此外,您可以使用模拟框架来观察被测试的方法如何与其依赖项交互,例如Moq:

    var dep = new Mock<IMyDependency>();
    var classBeingTested = new MyClass(dep.Object);
    
    classBeingTested.MyMethod();
    
    dep.Verify(x => x.MethodWhichMyClassShouldHaveCalled(), Times.Once);
    dep.Verify(x => x.MethodWhichMyClassShouldNotHaveCalled(), Times.Never);
    

    【讨论】:

      猜你喜欢
      • 2011-06-25
      • 1970-01-01
      • 2019-10-27
      • 2010-11-06
      • 1970-01-01
      • 2019-11-17
      • 1970-01-01
      • 2023-03-21
      • 1970-01-01
      相关资源
      最近更新 更多