JUnit测试:如何测试Thread的结果

时间:2012-01-06 12:48:07

标签: java multithreading junit

我调用传递参数的方法。如果此参数等于某个特定内容,则会重复启动某个线程,直到它停止为止。在每次重复中,都会改变一些值 有没有办法从JUnit检查这些值?

2 个答案:

答案 0 :(得分:3)

如果您正在产生线程,那么您不再进行单元测试了 - 您正在进行集成测试。重构您的代码,以便可以在没有线程生成的情况下测试更改此“值”的逻辑。如果它在没有产生线程的情况下工作,那么它会在产生线程时起作用(我知道我已经为自己设置了一个讲座......你需要确保你正确地同步任何可能共享的变量而不是有任何可能导致死锁的代码。)

如果没有看到代码,就很难尝试建议测试方法。但是,如果您正在生成线程,那么绝对不是单元测试。

答案 1 :(得分:0)

如果您尝试测试以查看每次迭代是否正确修改了值,则使用预期输入调用迭代代码并测试预期输出。分别测试每个peice:

伪java代码:

for each (file : files) {
    doSomething(file); // this updates some running totals or something
}

然后,您想编写一些单元测试,在您要测试的每个输入上调用doSomething(),并查看值是否适当更新(必要时进行模拟)。然后进行集成测试,让线程生成并检查结果值。

相关问题