我有一个问题,当我@Rule
为我使用 JUnit 的注释TemporaryFolder
并想同时使用Mock
s时,我在4.11 中unitils.easymock
得到了一个,而在4.10 中它仍然有效。IlleagalStateException
JUnit
JUnit
因此,以下测试在 JUnit 4.10 下运行并IllegalStateException
在 4.11 中抛出:
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("");
我的问题:
在 JUnit 4.11中,使TemporaryFolders
or @Rule
s 通常与 s 一起工作的正确方法是什么?unitils.easymock.annotation.Mock
还是不能同时使用 easymock@Mock
注释和@Rule
s 进行模拟?
版本:
easymock 3.4
unitils 3.4.3