49

次のコードがあります。

    @BeforeClass
    public static void setUpOnce() throws InterruptedException {
        fail("LOL");
    }

@Before、@After、@Test、または @AfterClass メソッドのいずれかである他のさまざまなメソッド。

起動時にテストが失敗することはありません。誰か助けてくれませんか?

私はJUnit 4.5を持っています

メソッドは、@before として注釈が付けられた setUp() への即時呼び出しに失敗しています。クラスの定義は次のとおりです。

public class myTests extends TestCase {
4

6 に答える 6

69

TestCase を拡張し、同時に注釈を使用しないでください。
注釈付きのテスト スイートを作成する必要がある場合は、次のように RunWith 注釈を使用します。

@RunWith(Suite.class)
@Suite.SuiteClasses({ MyTests.class, OtherTest.class })
public class AllTests {
    // empty
}


public class MyTests {  // no extends here
    @BeforeClass
    public static void setUpOnce() throws InterruptedException {
        ...
    @Test
    ...

(慣例: 大文字のクラス名)

于 2009-04-09T08:46:25.160 に答える
16

メソッドは静的である必要があり、fail を直接呼び出してはなりません (そうしないと、他のメソッドは実行されません)。

次のクラスは、すべての標準 JUnit 4 メソッド タイプを示しています。

public class Sample {

    @BeforeClass
    public static void beforeClass() {
        System.out.println("@BeforeClass");
    }

    @Before
    public void before() {
        System.out.println("@Before");
    }

    @Test
    public void test() {
        System.out.println("@Test");
    }

    @After
    public void after() {
        System.out.println("@After");
    }

    @AfterClass
    public static void afterClass() {
        System.out.println("@AfterClass");
    }

}

出力は次のとおりです (驚くべきことではありません)。

@BeforeClass
@Before
@Test
@After
@AfterClass
于 2009-04-09T06:24:10.320 に答える
2

次のことを確認してください。

  • テスト クラスが TestCase から継承されていません
  • @BeforeClass メソッドは静的です
  • テストクラス階層に複数の @BeforeClass メソッドがありません (最も特殊化された @BeforeClass メソッドのみが実行されます)
于 2016-04-01T09:06:30.800 に答える
2

インポートを確認します。

  • @前
  • @後
  • @BeforeClass (これは静的である必要があります)
  • @AfterClass (これは静的である必要があります)

@Test アノテーションは同じパスからインポートする必要があります。

于 2021-01-06T23:50:39.623 に答える
0

前に注釈が付けられた関数を実行するには、次のことを行う必要がありました: Maven を使用する場合は、Junit 4.11+ への依存関係を追加します。

      <properties>
              <version.java>1.7</version.java>
              <version.log4j>1.2.13</version.log4j>
              <version.mockito>1.9.0</version.mockito>
              <version.power-mockito>1.4.12</version.power-mockito>
               <version.junit>4.11</version.junit>   
              <version.power-mockito>1.4.12</version.power-mockito>
      </properties>           

および依存関係:

      <dependencies>
        <dependency>
         <groupId>junit</groupId>
         <artifactId>junit</artifactId>
         <version>${version.junit}</version>
         <scope>test</scope>
       </dependency>    
        .
        .
        .
      </dependencies>

Junit Test クラスが TestCase クラスを拡張していないことを確認してください。古いバージョンとの重複が発生するためです。

public class TuxedoExceptionMapperTest{
   protected TuxedoExceptionMapper subject;

   @Before
   public void before() throws Exception {
     subject = TuxedoExceptionMapper.getInstance();
      System.out.println("Start");
      MockitoAnnotations.initMocks(this);
   }
}
于 2015-03-30T14:27:46.733 に答える