我有一个使用Assembly.LoadFrom(...)语句的方法,并从该附属程序集中返回支持的文化,那么我怎么能为这种类型的方法编写单元测试。
我所做的是,用静态方法/逻辑包装来返回anther类中的文化并使用它的实例方法。这是正确的做法吗?
答案 0 :(得分:1)
这是情况吗?
aMethod(whatToLoad) {
// other stuff
x = Assembly.LoadFrom( whatToLoad );
// code using x
}
第一个原则:我们专注于测试aMethod(),Assembly.LoadFrom()的测试是一个单独的问题。在我们为aMethod()构建测试时,我们不会尝试测试其依赖项。
那么我们需要什么样的测试?
如果测试可以提供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。