使用Spring JPA进行单元测试 - @Autowired无效

时间:2015-11-03 11:51:41

标签: spring unit-testing spring-junit

我有一个单元测试和一个帮助类。 不幸的是帮助班#39; autowire不起作用。 它在MyTest类中工作正常。

private int getPixelsToDP(int dp) {
    float scale = getResources().getDisplayMetrics().density;
    int pixels = (int) (dp * scale + 0.5f);
    return pixels;
}

我想避免使用setter,因为我喜欢其中10个对象,不同的测试有不同的对象。 那么让@Autowired在Helper课程中工作需要什么? THX!

2 个答案:

答案 0 :(得分:0)

你的助手类没有弹簧实例化......你必须添加像@component这样的注释(如果你正在使用包扫描),或者你可以在springconfiguration类中将类定义为Bean。但是如果你自己创建实例,它就不起作用

答案 1 :(得分:0)

你不能用Helper语句创建new类,但是你必须让spring创建它成为一个弹簧,因此它的@Autowired字段会被注入。

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath*:context.xml"})
@Component
public class MyTest {

    @Autowired
    private Something something1;

    @Autowired
    private Something something2;
    ..

    @Autowired
    private Helper helper

    @Test
    public void test1() {
        helper.initDB();
    }
}


//this class must been found by springs component scann
@Service
public class Helper {
   @Autowired
   private Something something1;

   @Autowired
   private Something something2;

   public void initDB(){...}
}