我遇到问题,当我使用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