0
我正在使用JUnitCore
以編程方式運行一些JUnit測試,並且一旦完成後我想從測試類中獲取一些數據(因此@AfterClass
)。這裏是我下工作的約束僞代碼示例:在線程環境中從JUnit測試類中獲取數據
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
可能是錯誤的。我如何解決這個問題?我很迷茫。
* runTest *只讀取數據嗎?如果是這樣,你應該沒有任何問題,假設* run * *在* done *之後啓動。 – Pragmateek
@Pragmateek也許我的例子並不是最清楚的,對不起。基本上runTest()被調用,這將導致B中的方法執行。如果我正確理解JUnit,runTest()將不會完成,直到done()完成。我想在runTest()方法中獲取done()設置的數據。 – chris
爲什麼你所有的方法都是靜態的?如果你需要運行一個上下文,你最好(如果可以的話)使用實例方法,以便每個線程都可以使用它自己的一組本地數據。如果所有線程都需要相同的數據,則需要進行一些同步。你能詳細說明你的情況嗎? – Pragmateek