2011-04-14 56 views
0

我注意到,当单元测试退出时,所有生成的线程都会自动终止,这与从命令行运行的java程序完全不同。在命令行中,程序不会退出,直到所有非deamon线程退出。如何使JUnit的行为与从命令行运行的Java相同

如何使用jUnit测试涉及衍生线程的情况?

+0

所以,你有一个测试情况,产生一个线程,需要等待它完成,以检查其结果?如果是这样的话,你不能通过使用连接来等待线程完成测试用例吗?你可以重构代码,以便可以测试这些功能,而不必将它置于单独的线程中吗? – DaveH 2011-04-14 08:14:27

+0

我需要测试的方法产生一个线程。 – user705414 2011-04-14 08:19:09

+0

如果您正在测试的方法返回创建线程的引用,然后加入。如果没有,请创建自己的线程来调用待测方法并加入。 – DaveH 2011-04-14 08:25:10

回答

2

如果您正在测试的方法返回它创建的线程的引用,然后加入。如果没有,请创建自己的线程来调用待测方法并加入。

0

我建议你让你的单元测试shutdown()它的组件,使它返回到测试开始前的状态。这在运行系统中可能并不需要,但它允许您多次运行多个测试。

你甚至可能想借正在运行的线程的快照开始和之后检查有没有新的线程(可能有一些预期的结果这是好的)