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