我在想什么是测试工厂行为代码的最佳实践。在我的例子中,工厂创建了一些依赖实例,这些实例将被传递给FooBar实例的构造函数。测试工厂行为
public class FooBarFactory {
private Dependency1 dependency1;
private Dependency2Factory factory;
public FooBarFactory(Dependency1 dependency1, Dependency2Factory factory) {
this.dependency1 = dependency1;
this.factory = factory;
}
public FooBar create() {
return new FooBar(dependency1, factory.create(), new Dependency3());
}
}
该依赖关系可以由其他一些工厂创建,或者可以由被测工厂直接创建。
为了测试工厂行为,我现在要做的是在FooBar中创建一些受保护的getter以检索依赖关系,以便我可以断言构造函数注入并正确创建依赖关系。
这是我不确定的地方。为了测试的目的添加一些getter让我有点困扰,因为它破坏了封装。我也可以使用反射来检索字段值,但我通常会考虑这种不好的做法,因为它很容易中断。
任何人都可以提供有关此问题的见解?
什么让我困惑的是一句'要测试工厂的行为,我有什么对现在要做的是创造一些FooBar'保护干将。您不必使用'FooBar'来测试工厂行为。 – Keppil 2012-07-09 14:15:04
如果我不能使用工厂调用的结果FooBar,我如何测试FooBar已经正确构建? – ebelanger 2012-07-09 14:19:19
你应该通过注入定制的测试依赖项来测试'FooBar',然后在一个单独的测试测试中测试你的工厂产生的期望。不要混合两个测试。 – Keppil 2012-07-09 14:21:11