考虑一个Spring(启动)应用程序,该服务在调用服务时会在输出文件夹中生成文件。我正在尝试使用JUnit Jupiter来测试这种功能,但是我希望在测试后将生成的文件丢弃,这就是为什么我目前正在尝试使用@TempDir
的原因。它似乎确实可以满足我的要求,但是我正在努力指示Spring上下文将生成的文件发送到临时目录。
MyService.java
@Service
public class MyService {
@Value("${myservice.output-directory}")
private String outputDirectory;
public void generateOutputFiles() {
// ...
}
}
MyServiceTest.java
@SpringBootTest
class MyServiceTest {
@TempDir
protected static Path outputDirectory;
@Autowired
private MyService myService;
@Test
void test1() {
// ...
}
}
因此,我的问题是,是否有一种干净的方法将myservice.output-directory
属性设置为临时目录的绝对路径?
答案 0 :(得分:1)
对于这种情况,您可以使用ReflectionTestUtils
。您可以在测试方法中进行操作,也可以在单元测试中的@Before
中进行操作,如果您已经从资源目录中的application.yml
中配置了任何值,则将覆盖该值。
@SpringBootTest
class MyServiceTest {
@TempDir
protected static Path outputDirectory;
@Autowired
private MyService myService;
@Test
void test1() {
ReflectionTestUtils.setField(myService, "outputDirectory", outputDirectory);
}
}