この疑問は、テストケースを書くときに発生します。 Fooはフレームワークライブラリ内のクラスであり、ソースのアクセス権を持っていません。リフレクションやその他の方法でJavaの最終的なメソッドをオーバーライドしますか?
public class Foo{
public final Object getX(){
...
}
}
私のアプリケーション意志
public class Bar extends Foo{
public int process(){
Object value = getX();
...
}
}
ユニット・テスト・ケースは、私がために、他の依存関係にはFooオブジェクトを作成することはできませんようinitalizeすることができません。値がnullであるため、BarTestはnullポインタをスローします。
public class BarTest extends TestCase{
public testProcess(){
Bar bar = new Bar();
int result = bar.process();
...
}
}
反射APIを使用してgetX()を非最終に設定する方法はありますか?どのようにテストする必要がありますか?
これは単位テストの対象ではありません。単体テストは非常にきめ細かなコード単位用です。あなたが説明していることは、統合テストや多分機能テストのように思えます。 –
必ずしもそうではありません。彼が働いている特定の状況(つまり、他のクラス、DBなど)はわかりませんが、一度に多くのクラスで行うことができるテストがあります。たとえば、外部ライブラリを使用している場合などです。 OK、それが正常に動作していると仮定し、テストですべてのclasesを使用します。 – Seb
ええ、「一度に多くのクラスでできるいくつかのテスト」があります。それらは単体テストではありません。まだ有用で、重要なことですが、** unit **のテストではありません。 –