![]() |
1
22
不幸的是我不相信你能 明确地 使用运行时测试来证明代码是线程安全的。您可以针对它抛出任意多个线程,并且它可能/可能不会通过,具体取决于调度。 也许您应该看看一些静态分析工具,例如 PMD ,它可以确定如何使用同步,并确定使用问题。 |
![]() |
2
16
我建议使用 MultithreadedTC Bill Pugh (和 Nat Ayewah overview :
此框架允许您在单独的测试中确定地测试每个线程交错 |
![]() |
3
9
你只能证明并发错误的存在,而不是它们的不存在 但是,您可以编写一个专门的测试运行程序,生成多个并发线程,然后调用@test注释的方法。 |
![]() |
4
7
TypeMock Racer 或 Microsoft CHESS 我想Java世界也有类似的东西。 |
![]() |
5
5
并发运行可能会导致意外的结果。例如,我刚刚发现,虽然我的测试套件有200个测试在一个接一个地执行时通过了,但是并发执行失败了,我发现这不是线程安全问题,而是一个依赖于另一个的测试,这是一件坏事,我可以解决这个问题。 Mycila work on JUnit ConcurrentJunitRunner and ConcurrentSuite 对测试类进行如下注释将导致并发执行测试方法,并发级别为6:
|
![]() |
6
2
试试看JUnit附带的ActiveTestSuite。它可以同时启动多个JUnit测试:
上面的代码将并行运行同一个JUnit测试类5次。如果您希望在并行测试中有变化,只需创建一个不同的类。 |
![]() |
7
1
同步的 您需要在不同的vm中同时运行测试程序的多个副本。你可以用 如果你不能让你的测试框架来做,你可以自己启动一些虚拟机。 流程构建器的工作是一个痛苦的路径和什么都没有,但这里是总的草图:
|
![]() |
8
1
测试并发性错误是不可能的;您不仅需要验证输入/输出对,而且还必须在测试期间可能发生或可能不发生的情况下验证状态。不幸的是,JUnit没有能力这样做。 |
![]() |
9
1
您可以使用tempus fugit库并行运行测试方法,并多次模拟负载测试类型环境。尽管前面的一条评论指出post方法是同步的,因此受到保护,但是关联的成员或方法可能涉及到它们本身不受保护的内容,因此 可能的 负荷/浸泡式试验 抓住这些。我建议您设置一个相当粗粒度/端到端类似的测试,以便为您提供捕获任何环路漏洞的最佳机会。 顺便说一下,我是上述项目的开发人员:) |
![]() |
10
0
|
![]() |
11
0
这里最好的方法是使用系统测试来用请求爆破代码,看看它是否崩溃。然后使用单元测试检查逻辑正确性。我的方法是为异步调用创建一个代理,并让它在测试中同步进行。
|
![]() |
12
0
你也可以试试 HavaRunner |
![]() |
mg610 · 如何开始C++单元测试 2 年前 |
![]() |
Phil Gunning · 使用嵌套函数更改进行模拟测试 2 年前 |
![]() |
shilin agre · 在Python中测试修饰函数 2 年前 |
![]() |
SlipScout · Unittest只传递单个值,而不是获取多个值 2 年前 |
![]() |
Alex · 从实际对象的实例返回默认模拟结果 2 年前 |