0

を使用してプログラムでいくつかの JUnit テストを実行しています。JUnitCore終了したら、テスト クラスからデータを取得したいと考えています (so @AfterClass)。これは、私が取り組んでいる制約の疑似コードの例です。

public class A {
    public static String testData;       

    public static void runTest() {
        JUnitCore juc = new JUnitCore();
        juc.run(B);

        // This is where I would like to access testData for this 
        // particular run
    }

    public static void setTestData(String s) {
        testData = s;
    }
}

public class B {
    // Some @Test methods and stuff omitted

    @AfterClass
    public static void done(String s) {
        A.setTestData(someData);
    }
}

私の問題は、異なるスレッドが を呼び出しrunTest()ているtestData可能性があるため、間違っている可能性があることです。これを回避するにはどうすればよいですか? 私はとても迷っています。

4

1 に答える 1

0

このデザインが本当に必要な場合、または使用したい場合はtestDatajava.lang.ThreadLocal<String>. これにより、マルチスレッドの問題が解決されます。

于 2013-06-22T22:28:51.547 に答える