从JUnit 4.10到4.11

时间:2016-11-16 07:13:34

标签: easymock temporary-directory junit-rule unitils

我遇到问题,当我使用JUnit中的@Rule注释为TemporaryFolder并且想要同时使用来自Mock的{​​{1}}时unitils.easymock 4.11中的IlleagalStateException,而JUnit 4.10中的JUnit仍有效。

因此,以下测试在JUnit 4.10下运行,并在4.11中抛出IllegalStateException

import java.io.File;
import java.io.IOException;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
import org.unitils.UnitilsJUnit4;

public class MyTest extends UnitilsJUnit4 {

    @Rule
    public TemporaryFolder temporaryFolder = new TemporaryFolder();

    @Test
    public void testSomething() throws IOException {
        File newFile = temporaryFolder.newFile();
    }

}

即使我使用模拟功能的注释而不是extends UnitilsJUnit4,它在JUnit 4.11中也不起作用:

@RunWith(UnitilsJUnit4TestClassRunner.class)
public class MyTest {
 ...
}

测试此代码时的错误消息是:

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

我刚刚发现的新内容:在JUnit 4.10中,我还可以在newFile()调用中传递字符串时强制执行相同的错误:

        File newFile = temporaryFolder.newFile("");

我的问题:

使TemporaryFolders@Rule与JUnit 4.11中的unitils.easymock.annotation.Mock一起使用的正确方法是什么?

或者是否同时使用easymock @Mock注释和@Rule进行模拟是不可能的?

版本:

easymock 3.4
unitils 3.4.3

0 个答案:

没有答案