【发布时间】:2016-07-19 10:28:44
【问题描述】:
我正在尝试为一组在网络上使用一些 REST 服务的方法编写一些 JUnit 测试。
一般来说,在我的方法中,我提供了一个文件路径和一个配置作为参数,但我预计随着我的进步,事情会变得更加复杂。
目前,对我来说,为以下之类编写 JUnit 测试的最佳方法是什么:
public Answers changeFileToAnswer(String filePath, String mediaType) {
File document = new File(filePath);
Answers answers = restService.changeFileToAnswer(document, mediaType);
return answers;
}
我可以为这样一个简单的类编写什么样的单元测试?测试 answers 对象将是一个集成测试,因为在这里进行了外部调用,对吗?这里有什么好的做法?有没有办法模拟作为参数传入的文件路径?
注意事项 - 此方法来自 REST 接口,稍后将通过 GUI 公开。我目前正在使用来自 POSTman 的 POST 调用对其进行测试。因此,我传递的是 filePath 的字符串而不是文件对象(因为我无法将其发布到我的服务器)。
谢谢。
【问题讨论】:
-
好吧,如果您不在方法中执行“new File()”,一切都会变得更容易。例如,为什么不传入一个文件对象?!
-
@GhostCat 我也是这么想的!在我的课堂上,这会导致大量重复,所以我认为这也是不好的做法?我想这是简洁和可测试性之间的折腾?
-
嗨,Simon,您使用 File 而不是 java.nio.file.Path 有什么原因吗?
-
@LucasT 好吧,目前这是一个将由对服务器的 POST 调用调用的方法。我目前正在使用 POSTman 对其进行测试-如果我使用 java.file.Path 调用,我不相信它会起作用?抱歉 - 我应该提到这一点。马上更新。
标签: java unit-testing junit mocking mockito