【发布时间】:2020-05-31 00:51:47
【问题描述】:
如何使用 Junit 测试测试以下服务方法?这是对我的代码的非常简单的重建,并且只是一个示例。 我想在 JUnit 测试中测试,如果 文件字符串为空或 null,会发生什么。 不幸的是,我是使用 JUnit 测试的新手。我已经阅读了一些关于休息控制器和服务的示例,并为我模拟了 repos 和它的方法,但是在这里我不知道它是如何工作的。有人可以帮忙吗?
public class MyService {
private String fileName = "src/main/resources";
// or
// private String fileName = ${modulename.config.filename};
// @Autowired
// private RepoService RepoService;
@EventListener
public void init(ContextRefreshedEvent event) {
try {
myMethod();
} catch (Exception e) {
// LOGGING
};
}
public void myMethod() {
if(fileName != null && !fileName.isEmpty()) {
// doSomething with file and IOException
// save in repo
} else {
// LOGGING
}
}
}
public void myMethod() {
if(fileName != null && !fileName.isEmpty()) {
// doSomething with IOException
} else {
// LOGGING
}
}
}
测试应如下所示。我试图在测试中以某种方式设置该值,但它没有意义,并且当时没有设置。
@SpringBootTest
class DemoApplicationTests {
@Test
public void fileNameTest() {
// GIVEN
//Mockito.when()
// WHEN
// THEN
}
}
【问题讨论】:
-
当文件名被硬编码时,你为什么要测试
fileName?您是否在MyService实例的生命周期中更改过文件名? -
实际上我会将文件路径和名称放在 application.properties 中。我想对其进行测试,以便在文件位置发生移动的情况下,它也可以工作。
标签: java spring-boot junit mockito