我创建了一个Spring Boot应用程序。我有一个同步方法。我想创建JUnit测试来测试此方法是否已同步。这是课程和方法:
public class FileManager {
public synchronized void saveTheFile(String theTemperature, String cityName) throws IOException {
InputStream streamIn = toInputStream(theTemperature, "UTF-8");
OutputStream streamOut = new FileOutputStream(cityName + ".txt", true);
try {
IOUtils.copy(streamIn, streamOut);
} finally {
IOUtils.closeQuietly(streamIn);
IOUtils.closeQuietly(streamOut);
}
}
}
我想我需要使用多线程,但我甚至不知道如何启动我的@Test。请指教!
答案 0 :(得分:0)
基于你不使用任何可变状态的事实,我认为你根本不需要同步任何东西。
但是,就测试并发性而言,我建议您使用tempus-fugit
库(http://tempusfugitlibrary.org/)
使用这个库,编写有关多线程和并发的任何测试都非常容易:
@RunWith(ConcurrentTestRunner.class)
public class SomeTest {
@Test
public void test1() {}
@Test
public void test2() {}
}
根据文件:
类中的每个测试方法都将在其自己的线程上运行 与该类中的任何其他测试方法并行。所以,数量 给定测试类的线程将等于测试的数量 该类中的方法。