@Capturing |
テスト実行の間にJVMによってロードされる追加のクラスについてもモックする |
@Mocked |
テスト実行の間にJVMによってロードされる追加のクラスはモックしない |
テスト対象クラス(Hello.java)
import java.io.File;
import java.io.FileFilter;
public class Hello {
public static String helloStatic() {
return "helloStatic()";
}
public String helloInstance1() {
return "helloInstance1";
}
public String helloInstance2() {
return "helloInstance2";
}
public File[] getFiles() {
return new File(".").listFiles(new FileFilter() {
public boolean accept(File file) {
return true;
}
});
}
}
テストクラス(HelloTest.java)
import java.io.File;
import java.io.FileFilter;
import mockit.Capturing;
import mockit.Expectations;
import mockit.Mocked;
import mockit.integration.junit4.JMockit;
import org.junit.Test;
import org.junit.runner.RunWith;
import static org.junit.Assert.*;
import static org.hamcrest.CoreMatchers.*;
@RunWith(JMockit.class)
public class CapturingTest2 {
@Test
public void testHelloMocked(@Mocked FileFilter filter) {
new Expectations() {{
filter.accept((java.io.File)any); returns(true, true, false);
}};
Hello hello = new Hello();
File[] files = hello.getFiles();
for(File f : files) {
System.out.println(f);
}
assertThat(files.length, is(2));
}
@Test
public void testHelloCapturing(@Capturing FileFilter filter) {
new Expectations() {{
filter.accept((java.io.File)any); returns(true, true, false);
}};
Hello hello = new Hello();
File[] files = hello.getFiles();
for(File f : files) {
System.out.println(f);
}
assertThat(files.length, is(2));
}
}