0

我有一个问题,当我@Rule为我使用 JUnit 的注释TemporaryFolder并想同时使用Mocks时,我在4.11 中unitils.easymock得到了一个,而在4.10 中它仍然有效。IlleagalStateExceptionJUnitJUnit

因此,以下测试在 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中,使TemporaryFoldersor @Rules 通常与 s 一起工作的正确方法是什么?unitils.easymock.annotation.Mock

还是不能同时使用 easymock@Mock注释和@Rules 进行模拟?

版本:

easymock 3.4
unitils 3.4.3
4

0 回答 0