首页 > 解决方案 > Java org.junit.Assert 线程安全吗?

问题描述

我想验证 assert 和 assertEquals 是否是线程安全的。我理解它不是,因为我相信我在使用它进行 JUnit 测试时遇到了竞争条件。当然,我还有其他方法可以验证结果。我使用这个功能只是为了方便。我查看了http://junit.sourceforge.net/javadoc/org/junit/Assert.html以供参考,并没有提到任何内部同步或锁定。谢谢。

标签: javamultithreadingjunitthread-safetyassert

解决方案


对于任何合理的实现,以及我随机搜索的那个,assertTrue并且assertEquals它们本身与线程无关。线程不可知论是世界的常见状态。

因为值正在发生变化,对于Object重载,预期equals对象上的值需要是线程安全的,并且值可能会有所不同。toString

失败消息通过 a 传递String给 simple AssertionFailedError,所有看起来都是按顺序排列的,尽管Throwable对于不安全的发布并不安全(可变性不大)。


推荐阅读