1. ホーム
  2. java

[解決済み] Junit before class ( 非静的 )

2023-06-28 10:38:58

質問

Junitにテストファイル内で関数を一度実行させるためのベストプラクティスはありますか?

のように @BeforeClass のような、非静的な関数の場合?

これは醜い解決策です。

@Before void init(){
    if (init.get() == false){
        init.set(true);
        // do once block
    }
}

これは私がやりたくないことで、統合されたJunitのソリューションを探しています。

どのように解決するのですか?

1回限りの初期化のために静的なイニシャライザを設定したくない、JUnitを使うことにこだわりがない、という方はTestNGを見てみてください。TestNGは静的でない1回限りの初期化を様々な設定オプションでサポートしており、全てアノテーションを使用しています。

TestNGでは、これと同等になります。

@org.testng.annotations.BeforeClass
public void setUpOnce() {
   // One time initialization.
}

ティアダウン用。

@org.testng.annotations.AfterClass
public void tearDownOnce() {
   // One time tear down.
}

JUnit 4のTestNGに相当するものについては @Before@After を使用することができます。 @BeforeMethod@AfterMethod をそれぞれ