私はこのフォーラムに類似しているかもしれない別の質問があることを知っています。重複としてマーキングする前に読んでください。別のテストクラスで既存のJUnitテストをどのように使用するのですか?
私は、別のクラスで定義されているテストを@beforeアノテーションを介して実行する方法を探しています。 - 私はすでに別のクラスを拡張するので、私のために不可能である
1. TestClass1からTestClass2を拡張:そこに似たオンライン質問している2つの提案で
public TestClass1 {
@before
public void setup() throws Exception{
super.setup();
}
@Test
public void testSomething(){...}
}
public TestClass2 {
@Test
public void testSomethingAndSomethingElse() {
// Somehow execute testSomething() in a way which will force
it to go through the @before
// and then test something else
}
}
。
2は、このように、委任を使用してTestClass2からTestClass1にアクセスするには、次の
// Instantiate TestClass1 as a member of TestClass2
public TestClass2 {
private TestClass1 one = new TestClass1();
public void testSomethingAndSomethingElse1() {
one.testSomething();
}
}
問題ここone.testSomethingを呼び出すとき()ということです - あなたはTestClass1の@Before注釈、中を通過しないであろう、私の他のオブジェクトを初期化するには大文字小文字の区別が必要です。
おそらく別の方法がありますか?
使用は統合テストであり、単体テストではありません。 別の@testの中で@testを使用する能力が必要ですが、他の回避策は必要ありません。
明示的に呼び出す方法'TestClass2'の' setup() 'ですか? – c0der
は、setup()がTestClass1の@testのデータを準備しているためです。 TestClass2から呼び出されると、このデータはTestClass1の範囲外になります。 –
同じクラスの 'TestClass1'と' TestClass2'サブクラスはありますか?もしそうなら、 '@ before'アノテーションをスーパークラスに移動することを検討してください。 – c0der