JUnit测试同步方法

时间:2017-07-26 12:34:33

标签: java spring multithreading junit synchronized

我创建了一个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。请指教!

1 个答案:

答案 0 :(得分:0)

基于你不使用任何可变状态的事实,我认为你根本不需要同步任何东西。

但是,就测试并发性而言,我建议您使用tempus-fugit库(http://tempusfugitlibrary.org/

使用这个库,编写有关多线程和并发的任何测试都非常容易:

@RunWith(ConcurrentTestRunner.class)
public class SomeTest {
  @Test
  public void test1() {}

  @Test
  public void test2() {}
}

根据文件:

  

类中的每个测试方法都将在其自己的线程上运行   与该类中的任何其他测试方法并行。所以,数量   给定测试类的线程将等于测试的数量   该类中的方法。