JUnitの@Rule
アノテーションを使用し、同時にsTemporaryFolder
を使用したい場合、4.11 では取得できますが、4.10 ではまだ機能するという問題があります。Mock
unitils.easymock
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 と連携させる適切な方法は何ですか?unitils.easymock.annotation.Mock
それとも、easymock@Mock
アノテーションと@Rule
s を同時に使用したモッキングは単に不可能なのでしょうか?
バージョン:
easymock 3.4
unitils 3.4.3