2

所以我有一个接口,我们称它为 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 并且测试失败。我正在寻找一些关于正确方法的指导。

4

1 回答 1

2

实际上,您可以 @Autowire 模拟对象。我推荐 Mockito 框架。更多信息和示例:http ://code.google.com/p/mockito/

将 Mockito 模拟注入 Spring bean

更多关于模拟:

在面向对象编程中,模拟对象是以受控方式模仿真实对象行为的模拟对象。程序员通常会创建一个模拟对象来测试其他对象的行为,就像汽车设计师使用碰撞测试假人来模拟人类在车辆碰撞中的动态行为一样。

http://en.wikipedia.org/wiki/Mock_object

于 2012-09-13T20:12:14.777 回答