我在想什麼是測試工廠行爲代碼的最佳實踐。在我的例子中,工廠創建了一些依賴實例,這些實例將被傳遞給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