NUnit单元测试注意事项

  1. 命名规范
被测试的对象 测试本身要新建的对象
项目 新建一个名为[被测项目].Tests的测试项目
至少为每个被测试类新建一个名为[类名]Tests的类
方法 至少为每个被测试方法新建一个名为[方法名][测试场景][预期行为]的方法
  1. 单元测试方法主题需要包含的三要素:
  • 配置对象,根据需要新建和设置它们
  • 操控对象
  • 通过断言判断结果是否符合预期
public void IsVaildFileName_validFileLowerCased_ReturnTrue()
{
//arrange
LogAnalyzer analyzer = new LogAnalyzer();
//act
bool result = analyzer.IsValidLogFileName("whatever.slf");
//assert
Assert.IsTrue(result,"filename should be valid!");
}
  1. 所有的单元测试方法都必须是public void的
  2. 对异常的验证
    Assert.Throws(typeof(ArgumentOutOfRangeException), () => program.DoSomething(-3));
  3. 标签用法及含义
标签用法 含义
[TestFixture] 标记此类为单元测试类
[Test] 标记此方法为单元测试方法
[SetUp] 单元测试开始之前调用的方法
[TearDown] 单元测试结束之后调用的方法
[Ignore(“这个测试忽略”)] 忽略某个测试方法
[Category(“运行快的测试”)] 设置测试类别

如果被测方法依赖于外部资源又会怎样呢?比如依赖于文件系统、数据库、Web服务或者任何我们很难控制的其他东西。这正是我们开始新建测试桩对象(stub)、伪对象(fake)和模拟对象(mock)的时候

桩对象:测试是无法控制依赖项的返回值或其行为的(比如我们要模拟一个异常)。此时需要桩对象

外部依赖是指在系统中代码与其交互的对象,而且无法对其做人为控制。(最常见的例子是文件系统、线程、内存和时间等)

桩对象是对系统中现有依赖项的一个替代品,可人为控制。通过使用桩对象,无需涉及依赖项,即可直接对代码进行测试。

任何面向对象的问题都可以通过添加一个间接层来解决,除非有太多的间接层。

猜你喜欢

转载自blog.csdn.net/u010178308/article/details/88843020