15

@Testで注釈が付けられたメソッドを持つクラスでJUnitメソッドを実行することはできますが、このテストでのみメソッド@Beforeを無視することはできますか?@Before

編集:JUnitが回避策ではなく、この機能をサポートしているかどうかに興味があります。setUp()別のクラスでテストを移動したり、アノテーションを削除して各テストメソッドを手動で呼び出したりするなどの回避策を知っています。

クラスに30のテストがあり、そのうちの29は@Beforeテストの初期化を本当に単純化しますが、そのうちの1つ(または複数)は役に立たない/物事を複雑にします。

public class MyTestClass {

    @Before
    public void setUp() {
        //setup logic
    }

    @Test
    public void test1() {
        //[...]
    }

    @Test
    public void test2() {
        //[...]
    }

    //more tests here

    @Test(ignoreBefore = true, ignoreAfter = true //false by default)
    //something equivalent to this
    public void test20() {
        //[...]
    }

}
4

4 に答える 4

5

TestRuleを使用してこれを行うことができます。JUnitの「before」メソッドから個々のテストを除外するという私の答えを参照してください。基本的に、ExternalResourceを実装し、applyメソッドで、メソッドに特定のアノテーションがあるかどうかを確認します。ある場合は、before/afterメソッドを実行しないでください。ただし、ルールからビフォー/アフターを具体的に呼び出す必要があります。

于 2012-12-14T13:41:18.910 に答える
3

それが役に立たない場合、それは問題ではないはずです-セットアップをもう一度実行することは害がありますか?

しかし、私はそれが可能であるとは思わず、私を不自由な機能として探しています。

別のアプローチ-そのテストを別のテストクラスに移動します。

于 2012-12-14T12:13:49.593 に答える
1

JUnit 5では、@Nestedアノテーションを使用してネストされたテストを行うことができます。

public class MainClass {
 @Nested
  class InnerClass1 {

  @BeforeEach 
  void setup(){}

  @Test 
  void test1(){}
 }

 @Nested
  class InnerClass2 {
  // No setup

  @Test 
  void test2(){}
 }
} 
于 2019-03-15T16:02:15.137 に答える
0

これに加えて、私が最近この地域を訪れたときに見つけたものです。

Junit / Mockitoは、@ Before注釈付きメソッドよりも、テストで定義されたモック動作を優先するようです。

于 2020-10-12T07:35:06.150 に答える