我正在尝试为一组在Web上使用一些REST服务的方法编写一些JUnit测试。
一般来说,在我的方法中,我提供了一个文件路径和一个配置作为参数,但我希望随着我的进展,事情会变得更加复杂。
目前,我最好的方法是为以下类似的方式编写JUnit测试:
public Answers changeFileToAnswer(String filePath, String mediaType) {
File document = new File(filePath);
Answers answers = restService.changeFileToAnswer(document, mediaType);
return answers;
}
我可以为这样一个简单的类写什么样的单元测试?测试答案对象将是一个集成测试,因为在这里进行外部调用,对吗?这里的好习惯是什么?有没有办法模拟作为参数传入的文件路径?
备注 - 此方法来自REST接口,稍后将通过GUI公开。我目前正在使用POSTman的POST调用进行测试。因此,我传入的是filePath的字符串而不是文件对象(因为我无法将其发布到我的服务器上)。
感谢。
答案 0 :(得分:0)
无需进行集成测试。你的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);
}
}
此规则将在文件系统中创建一个真实文件,当测试完成执行时将删除该文件。