我想测试我的代码是否是线程安全的,通过使用不同的参数同时从多个线程调用它。 以下是我想要测试的代码如何
的示例public void writeStringToFile(String fileName, String toBeWritten) {
//some implementation that junit should not care.
}
在上面的代码中,我想验证代码是否是线程安全的,如果它是同时使用多个线程的不同文件名调用的。 我应该如何设计我的JUnit以便于理解和维护?
答案 0 :(得分:0)
如果您将代码更改为public void writeStringToOutputStream(OutputStream out, String toBeWritten)
(或者将其设置为实际实现,并且原始方法只是一个瘦包装器),您可以传递一个FilterOutputStream来查找并发写入,甚至可能阻塞一段时间,所以其他潜在的并发写入可以尝试执行。
但这实际上只检查写入不是并发的,而不是该类不是线程安全的。如果检测到并发写入,则可以回读数据并确保其有效。