有没有人有任何建议或知道任何框架单元测试的多线程应用程序?单元测试多线程应用程序
4
A
回答
3
4
不测试多线程应用程序。重构代码以删除在不同线程中完成的工作之间的耦合。然后单独测试它。
2
通常不这样做单元测试的多线程应用程序的单元测试是不可靠和可重复的并发性 - 因为并发的性质错误通常不可能编写一致的失败或成功的单元测试,因此并发代码的单元测试通常不会进行非常有用的单元测试。
取而代之,您可以像平常一样单元测试应用程序的每个单线程组件,并依靠负载测试会话来确定并发问题。
这就是说,有一些实验负载测试框架用于测试并发的应用程序,如Microsoft CHESS - CHESS重复运行给定的单元测试和系统地探讨了并行测试的每一个可能的交织。这使得你的单元测试可靠和可重复。
然而,目前CHESS仍然是实验性的(可能不适用于JVM) - 现在坚持负载测试来清除并发问题。
1
测试多线程代码没有什么内在错误,特别是如果线程是您正在测试的代码的点。测试线程/异步代码的一般方法是阻止主测试线程,捕获来自其他线程的任何失败断言,解锁主测试线程并重新引发任何失败。 ConcurrentUnit照顾你的大部分:
final Waiter waiter = new Waiter();
new Thread(() -> {
doSomeWork();
waiter.assertTrue(true);
waiter.resume();
}).start();
// Wait for resume() to be called
waiter.await(1000);
相关问题
- 1. 多线程单元测试
- 2. 多线程单元测试
- 3. 多线程单元测试
- 4. 多线程应用程序中的单元测试事件
- 5. 单元测试Java多线程网络应用程序
- 6. 在很多单独的线程中测试Django应用程序
- 7. 单元测试多线程WPF应用程序中使用的类
- 8. 与testng做多线程单元测试
- 9. Python单元测试多线程
- 10. Python单元测试和多线程
- 11. 单元测试多线程Android RxJava
- 12. 单元测试Dababase应用程序
- 13. Selenium单元测试ExtJS应用程序
- 14. 单元测试CLI/MFC应用程序
- 15. 单元测试Vertx.io应用程序
- 16. WebTest单元测试瓶应用程序
- 17. 单元测试JavaEE应用程序
- 18. 单元测试ASP.NET应用程序
- 19. Android应用程序单元测试
- 20. 单元测试tkinter应用程序
- 21. 单元测试线程?
- 22. 单线程和多线程程序的基准测试
- 23. 单元测试php应用程序(我应该压力测试?)
- 24. 如何单元测试应用程序更新程序
- 25. 如何编写测试:Socket.io应用程序单元测试
- 26. 单元测试WP7应用程序测试日志
- 27. 单元测试使用存储过程的CakePHP应用程序
- 28. Rails测试离线应用程序
- 29. 多线程单元测试 - 通知调用事件线程以停止睡眠
- 30. 单元测试实用程序方法
这是链接到CHESS http://chesstool.codeplex.com/。看起来项目没有活动 – Amzath 2012-11-11 18:11:14