所以我有一个界面,让我们称之为X
所以在常规代码中我有:
public class doStuff()
{
@Autowired
private X x;
public stuff()
{
x.doYourThing();
}
}
我不知道如何测试它。
如果我尝试:
public class XTest()
{
@Autowired
private X x;
public void test(){
string val = x.FillUpVal();
assertTrue("It didn't work",val=="hi");
}
}
我将x作为null,因此它会立即抛出NullPointerException并且无法通过测试。我正在寻找关于正确方法的一些指导。
答案 0 :(得分:2)
事实上你可以@Autowire一个模拟对象。我推荐Mockito框架。 更多信息和示例:http://code.google.com/p/mockito/
Injecting Mockito mocks into a Spring bean
有关模拟的更多信息:
在面向对象的编程中,模拟对象是模拟对象 以受控方式模仿真实物体的行为。一个 程序员通常会创建一个模拟对象来测试其行为 其他一些对象,与汽车设计师使用的方式大致相同 碰撞测试虚拟模拟人类的动态行为 车辆撞击。