我有一个类,它有一个通过 spring bean 设置的字段,并用 @Autowired 进行注释,如下所示:
public class Foo {
....
@Autowired
private Bar bar;
....
}
我现在想要设置一个 JUnit 测试来测试某些功能,这些功能在某些时候将创建 Foo 对象。我无法控制何时生成此 Foo 对象。模拟此对象的最简单方法是什么,以便每当 Foo 实例化时,该对象都会填充模拟项?我正在使用第 3 方库来很好地模拟 Bar 对象,因此我更愿意在 Java 测试类中完成所有这些操作,而不使用 xml 文件。
我在网上找到的所有内容似乎都涉及创建 xml 文件或模拟该类的特定实例。谢谢大家的帮助!
我想要类似以下的内容:
public class Test {
private Bar mockedBar = createBar();
// somehow set 'mockedBar' so that any Foo object
// created always contains mockedBar
}
最佳答案
我在JMOCKIT的帮助下编写了测试,
请阅读它可能会对您有所帮助。
您只需创建具有重写所需方法的对象。
然后使用
Deencapsulation.setfield(FIXTURE,new Bar(){
//@Override you methods
});
FIXTURE 是您希望 Bar 实例可通过模拟方法使用的对象。
关于java - 在测试中模拟 Autowiring 的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33281825/