我正在尝试为一组使用网络上的 REST 服务的方法编写一些 JUnit 测试。
一般来说,在我的方法中,我提供文件路径和配置作为参数,但我预计随着我的进展,事情会变得更加复杂。
目前,对我来说编写 JUnit 测试的最佳方法是什么:
public Answers changeFileToAnswer(String filePath, String mediaType) {
File document = new File(filePath);
Answers answers = restService.changeFileToAnswer(document, mediaType);
return answers;
}
我可以为这样的简单类编写什么样的单元测试?测试答案对象将是集成测试,因为这里进行了外部调用,对吧?这里有什么好的做法?有没有办法模拟作为参数传入的文件路径?
注释 - 该方法来自 REST 接口(interface),稍后将通过 GUI 公开。我目前正在使用 POSTman 的 POST 调用来测试它。因此,我传递的是 filePath 的字符串而不是文件对象(因为我无法将其发布到我的服务器)。
谢谢。
最佳答案
集成不需要测试。您的 restService
需要是模拟的或假的,因此没有真正的外部调用。
对于模拟 filePath,您可以使用 JUnit TemporaryFolder .
public class TestClass{
@Rule
private TemporaryFolder folder = new TemporaryFolder();
@Test
public void testMethod(){
File tempFile = folder.newFile("myfile.txt");
classUnderTest.changeFileToAnswer(file.getPath(), mediaType);
}
}
此规则将在文件系统中创建一个真实的文件,当测试完成执行时该文件将被删除。
UPD:您可能还想查看jimfs
关于java - 在模拟文件路径时如何编写有效的 JUnit 测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38455941/