如何单元测试始终自动装配的接口(Java)

时间:2012-09-13 19:43:54

标签: java spring unit-testing autowired

所以我有一个界面,让我们称之为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并且无法通过测试。我正在寻找关于正确方法的一些指导。

1 个答案:

答案 0 :(得分:2)

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

Injecting Mockito mocks into a Spring bean

有关模拟的更多信息:

  

在面向对象的编程中,模拟对象是模拟对象   以受控方式模仿真实物体的行为。一个   程序员通常会创建一个模拟对象来测试其行为   其他一些对象,与汽车设计师使用的方式大致相同   碰撞测试虚拟模拟人类的动态行为   车辆撞击。

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