首页 > 解决方案 > 为什么没有创建规则临时文件夹?

问题描述

在 testclass 中使用 JUnit 临时文件夹时,我的问题似乎与“尚未创建文件夹”错误非常相似。
不幸的是,提供的解决方案对我不起作用,我不知道该怎么做。我想测试以下内容:

//@RunWith(SpringRunner.class)
@RunWith(PowerMockRunner.class)
@PrepareForTest({SomeClass.class, SomeClassTests.class})
@SpringBootTest
class SomeClassTests {

    @Autowired
    private SomeClass systemUnderTest;
    
    @Rule
    public TemporaryFolder folder = new TemporaryFolder();

    @Test
    void somePrivateMethodShouldDeleteSomeFile() {
        // given
        File foo = null;

        try {
            foo = folder.newFile("foo.java");
        } catch (IOException e) {
            assert false;
        }

        assertThat(foo.exists());

        // when
        try {
            Method privateMethod = SomeClass.class.getDeclaredMethod("somePrivateMethod");
            privateMethod.setAccessible(true);
            privateMethod.invoke(SomeClass.class);
        } catch (Exception e) {
            assert false;
        }

        // then
        assertThat(!foo.exists());
    }

    @TestConfiguration
    static class SomeClassTestsConfiguration {
        @Bean
        public SomeClass systemUnderTest() {
            return new SomeClass();
        }
    }
}

当我执行整个测试类以及执行单个测试时,它总是在第一个 try catch 块中抛出异常。

java.lang.IllegalStateException: the temporary folder has not yet been created

标签: javajunit

解决方案


推荐阅读