TDD - 如何为Ass​​embly.LoadFrom(...)编写方法的测试用例

时间:2009-09-09 06:38:25

标签: tdd nunit

我有一个使用Assembly.LoadFrom(...)语句的方法,并从该附属程序集中返回支持的文化,那么我怎么能为这种类型的方法编写单元测试。

我所做的是,用静态方法/逻辑包装来返回anther类中的文化并使用它的实例方法。这是正确的做法吗?

1 个答案:

答案 0 :(得分:1)

这是情况吗?

   aMethod(whatToLoad) {
          // other stuff

          x = Assembly.LoadFrom( whatToLoad );

          // code using x
  }

第一个原则:我们专注于测试aMethod(),Assembly.LoadFrom()的测试是一个单独的问题。在我们为aMethod()构建测试时,我们不会尝试测试其依赖项。

那么我们需要什么样的测试?

  1. 我们传递了whatToLoad
  2. 的正确值
  3. 我们正确存储/使用返回的值
  4. 我们正确处理从Assembly.LoadFrom()
  5. 引发的错误或异常

    如果测试可以提供Mock实现,那么最简单的方法就是这样做。然后我们可以通过检查Mock是否收到预期值来测试1。测试2通过返回一个明确定义的值(或多个测试不同的有趣值)测试3通过生成选定的错误条件。

    因此,您已将代码更改为以下内容:

      aMethod(loader, whatToLoad) {
              // other code
    
              x = loader.Load( whatToLoad );
    
              // code using x
      }
    

    也许加载是以其他方式注入的,但关键是你现在可以指定不同的测试我设置一个合适的loaoder。例如,对于第一次测试。

    testLoader = new MockLoaderThatRembers();
    
    tested.aMethod(testLoader, loadThis);
    
    assertEquals(testLoader.getLoader(), loadThis);
    

    所以,如果那是你正在做的事情,那么是的,我会说你正在启用TDD。