2009-09-09 74 views
1

我有这是使用Assembly.LoadFrom(...)语句,并返回从卫星装配支持的区域性方法的方法,所以我怎么能为这种类型的方法编写单元测试。TDD - 如何编写测试用例,作为Assembly.LoadFrom(...)

我所做的是,将该静态方法/逻辑封装为在其他类中返回文化并使用它的实例方法。这是正确的方法吗?

回答

1

这是情况吗?

aMethod(whatToLoad) { 
      // other stuff 

      x = Assembly.LoadFrom(whatToLoad); 

      // code using x 
    } 

第一原则:我们的重点是测试amethod方法(),Assembly.LoadFrom的测试()是一个单独的问题。当我们为aMethod()构建测试时,我们不试图测试它的依赖关系。

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

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

它如果测试可以提供模拟实现,则最简单。然后我们可以通过检查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。