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(){
....
}

では、このためのテストをどのように書くのでしょうか? プロパティ ファイルから値を読み取っているときに、コンストラクターを呼び出そうとしたときにテストしているときに、ユーザー名とパスワードが null であるため、null ポインター例外が発生し、テストが失敗します。この問題を克服してテストを成功させる方法はありますか? コンストラクターを呼び出す前に、これらの注釈付きの値を設定するにはどうすればよいですか?

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 に答える