我想测试A
类。
在A类构造函数方法中,创建了一个私有的final依赖项d
。我想模拟d
。下面是代码
public class A {
public A () throws FileNotFoundException {}
private final D d = new D();
}
public class D {
public D () throws FileNotFoundException {
Reader reader = new InputStreamReader(new FileInputStream("filePath"));
// other code...
}
}
由于filePath是docker配置中的特殊路径,我和我的导师决定使用MOCK返回一个d
来测试A
类。
我不知道如何模拟这种情况。以前,我确实在Mockito
中使用FieldSetter
来解决简单的情况。
1条答案
按热度按时间s2j5cfk01#
第一个选项是将
D
声明为构造函数参数。这也称为依赖注入,对测试很有用。此外,您仍然可以使用没有任何参数的构造函数:或者,您可以更优雅地测试此代码,而无需任何mock。为此,我们需要将相同的技术应用于
D
,并使用依赖注入来传递Reader
:由于
Reader
是一个接口,我们可以在测试中使用不同的实现。例如,我们可以使用StringReader
: