|
|
1
32
JUnit框架只捕获运行测试的主线程中的断言错误。它不知道来自新生成线程的异常。 为了正确执行,您应该将线程的终止状态传递给主线程。您应该正确地同步线程,并使用某种共享变量来指示嵌套线程的结果。 编辑: 以下是一个通用解决方案,可以帮助:
您应该在构造函数中将runnable传递给它,然后只需调用start()来激活,调用test()来验证。测试方法将在必要时等待,并将断言错误抛出到主线程的上下文中。 |
|
|
2
5
对…的小小改进
Eyal Schneider's answer
:
|
|
|
3
4
如果涉及多个工作线程,例如在原始问题中,仅仅连接其中一个线程是不够的。理想情况下,您需要等待所有工作线程完成,同时仍将断言失败报告回主线程,如在eyal的答案中。 下面是一个使用 ConcurrentUnit :
|
|
|
4
0
我最终使用了这个模式,它可以同时处理runnable和threads。它的灵感主要来自@eyal schneider的回答:
|
|
|
5
0
junit抛出扩展了throwable的assertionerror,它有相同的exception父级。您可以捕获线程的fail断言,然后保存在一个静态字段中,如果另一个线程的某些断言失败,则最后签入主线程。 首先,创建静态字段
其次,将断言包装在try/catch-and-catch断言错误中
最后,签入该字段的主线程
|
|
|
David · 如何在Junit的服务类中模拟依赖关系 2 年前 |
|
|
jhan · 无法解析JUnitParamsRunner 2 年前 |
|
|
Lucas Hill · 在Gradle中使用JUnit测试抛出的异常 2 年前 |
|
|
Alice · Kotlin中的单元测试方法 2 年前 |
|
|
snaik · 我的JUNIT代码不适用于jsonObject 2 年前 |
|
|
dcm50 · JUnit 5-已创建但未检索的实体 2 年前 |
|
|
Ignas Davulis · Java模拟类构造 3 年前 |