0

我有一个如下所示的课程

public class Abcd{

private  @Value("${username}")
String username;

private @Value("${password}")
String password;

public Abcd(){
   ServiceService serv = new ServiceService();
   Service port = serv.getServicePort();
   BindingProvider bp = (BindingProvider) port;
   bp.getRequestContext().put(BindingProvider.USERNAME_PROPERTY, username);
   bp.getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, password);

}

public void getSomeValueMethod(){
....
}

那么我该如何为此编写测试呢?当我从属性文件中读取值时,当我尝试调用构造函数进行测试时,由于用户名和密码为空,我得到一个空指针异常并且测试失败。有什么办法可以克服这个问题并成功测试吗?如何在调用构造函数之前设置这些带注释的值?

4

1 回答 1

6

就像 Spring 注入的所有内容一样:通过在单元测试中自己注入它们:

public class Abcd{

    private String username;
    private String password;

    public Abcd(@Value("${username}") userName, @Value("${password}") String password) {
        ...
    }
    ...
}

在你的单元测试中:

Abcd abcd = new Abcd("someUserName", "somePassword");

请记住,依赖注入的主要目标是能够在单元测试中手动注入虚假或模拟依赖。

于 2012-11-27T22:18:00.730 回答