2017-04-13 9 views
0

私は仕事で苦労しているコードを持っています。これを克服する方法についてもっと知りたいです問題のタイプ。Mockito、jUnit、testableクラスには@Namedアノテーションがあり、テスト時に値を渡す方法

public class SomeTestableClass { 
 

 
\t @Inject(optional = true) 
 
\t @Named("balance.period.tm") 
 
\t protected String balance; 
 

 
\t public void save(Connection connection, Report r) throws Exception { 
 
\t \t if (1 == 1) { 
 
\t \t \t someObject.someMethod(param1, param2, balance) { 
 
\t \t \t // do something, etc... 
 
\t \t \t } 
 
\t \t } 
 
\t } 
 
}

私はここで任意のビジネスコードを投稿することができませんが、私は私が直面してる問題の大まかなアイデアを作成したよう。すみませんが少し混乱しても、私はまだ非常に緑です。したがって、1つのプロパティファイルから値を取得する「文字列バランス」があります。

コードがsomeObject.someMethod()に到達すると、 "balance"がnullであるため、nullpointer例外が発生します。私はverify()で同じメソッドを使用しようとしています。

どのようにすればテストに値するか、どうすればこの問題を回避できますか?

乾杯。

+0

どの依存性注入フレームワークを使用していますか? –

+0

ユニットテストでは、セッターメソッドを使用することができます(または、テストでフィールドを表示させることができます)。このようにすれば、なぜフィールドにアクセス可能にするのかを文書化してください。別のオプションは、クラスを拡張し、 'save'メソッドの中でゲッターを使用することです。これにより、上書きされたゲッターは、テストで必要とする値を提供します。テストでインジェクションを使用したい場合(標準ユニットテストではありません!)、より多くの情報を提供する必要があります。 –

答えて

1

通常、このプロパティにはsetBalance(String val)セッターがありますが、そうでない場合は、テストが同じパッケージ名で実行されている場合は、テストから直接「保護された」プロパティにアクセスできます。

SomeTestableClass testable=new SomeTestableClass(); 
testable.balance="123.45"; 
+0

ありがとうございます。なぜ私はセッターについて考えなかったのか分かりません...乾杯 – Rain

関連する問題