0

私は2つのファイルを持っています:

xxxxxTest.java[これを参照]

public class xxxxxTest extends TestCase {

    // Run setup only once
    public static Test suite() {
        TestSetup setup = new TestSetup(new TestSuite(xxxxxTest.class)) {
            protected void setUp() throws Exception {
              //Some init which i need only once
            }

            protected void tearDown() throws Exception {

            }
        };
        return setup;
    }

    public void testMyFirstMethodTest() {
        assertNotNull(do stuff here);
    }
}

AllTests.java

public class AllTests {
    public static Test suite() {
        TestSuite suite = new TestSuite("Test for xxxxxx");
        //$JUnit-BEGIN$
        suite.addTestSuite(xxxxxTest.class);
        //$JUnit-END$
        return suite;
    }
}

したがって、個々のテスト(xxxxxTest.java)は、希望どおりに正常に機能します。テストスイート(AllTests.java)を実行すると、xxxxxTest.javaで提供したsetup()のinitが実行されないため、失敗します。 。

助言がありますか?

アップデート

JUnit 4で@BeforeClassを試しましたが、ssetUp()メソッドで組み込みのJettyサーバー(server.start())を起動すると、サーバーは投稿したコードで正常に動作するため、役に立ちませんでした。 @BeforeClassでも同じことをしますが、機能しません。

4

2 に答える 2

0

マヌエルのポイントに似ています: JUnit 3 を使用する必要がありますか? その場合、クラス レベルの static{} イニシャライザが最善の策かもしれません。

それ以外の場合は、JUnit 4 を使用することをお勧めします。

import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;


public class xxxxxTest  {

    @BeforeClass
    public static void beforeClass() {
        //Some init which i need only once
    }

    @Test
    public void testMyFirstMethodTest() {
        Assert.assertNotNull("");//do stuff here);
    }
}
于 2010-08-18T19:03:01.647 に答える
0

まれに、JUnit3 を使用しているときに static をハッキングしました。

あなたの場合:

  • static{} イニシャライザを試してみてください。静的初期化とは反対に機能する可能性があります。
  • 可能であれば JUnit4 にアップグレードし、@BeforeClass アノテーションを使用します (テストクラスに対して 1 回実行されます)。他の JUnit3 テストクラスは、JUnit4 テストランナーでも実行できるはずです。
于 2010-08-18T18:41:59.173 に答える