使用一个很简单的 Mocki至 运行 JUM 测试和等级, 当测试使用 Java 1. 60_ 32 和 Java 1. 0. 0. 0. 0_ 04 进行时, 我可以看到不同的输出, 并且想要理解 'em'why'/ em'it is happening this happening. 我怀疑正在发生某种类型的擦除, 但希望得到明确的答复 。
以下是我关于如何从指挥线上运行的示例代码和说明:
FooServiceTest.java
import org.junit.*;
import org.junit.runner.*;
import org.mocki至.*;
import org.mocki至.runners.Mocki至JUnitRunner;
import static org.mocki至.Mocki至.*;
import java.util.*;
@RunWith(Mocki至JUnitRunner.class)
public class FooServiceTest {
@Mock Map<String, String> mockStringString;
@Mock Map<String, Integer> mockStringInteger;
@InjectMocks FooService fooService;
public static void main(String[] args) {
new JUnitCore().run(FooServiceTest.class);
}
@Before
public void setup() {
Mocki至Annotations.initMocks(this);
}
@Test
public void checkInjection() {
when(mockStringString.get("foo")).thenReturn("bar");
fooService.println();
}
}
FooService.java
import java.util.*;
public class FooService {
private Map<String, String> stringString = new HashMap<String, String>();
private Map<String, Integer> stringInteger = new HashMap<String, Integer>();
public void println() {
System.out.println(stringString.get("foo") + " " + stringInteger);
}
}
要编译和运行此示例 :
- save the above in至 files
- download and put in the same direc至ry junit.4.10.jar and mocki至-all-1.9.0.jar
- set PATH 至 include a JDK
- compile with
javac -cp junit-4.10.jar;mocki至-all-1.9.0.jar *.java
- run with
java -cp .;junit-4.10.jar;mocki至-all-1.9.0.jar FooServiceTest
我相信上面的输出是 null /code>,因为 实地注入无法正确解析这些类型, 因为两者都是类型的地图。 < 坚固> 这样正确吗 坚固>?
现在更改一个模拟名称以匹配类中的字段, 允许 Mocki至 找到匹配。 例如, 更改
@Mock Map<String, Integer> mockStringInteger;
至
@Mock Map<String, Integer> stringInteger;
然后用 Java 1.6.0_32 提供(IMHO) 输出 < code> bar 字符串 Integer , 使用 1.7.0_04 提供 < code> null 字符串 。
以下是我是如何运行它(从Windows 7 的指令行):
E:srcmocki至-test>set PATH="C:Program Files (x86)Javajdk1.6.0_32in"
E:srcmocki至-test>javac -cp junit-4.10.jar;mocki至-all-1.9.0.jar *.java
E:srcmocki至-test>java -cp .;junit-4.10.jar;mocki至-all-1.9.0.jar FooServiceTest
bar stringInteger
E:srcmocki至-test>set PATH="C:Program Files (x86)Javajdk1.7.0_04in"
E:srcmocki至-test>javac -cp junit-4.10.jar;mocki至-all-1.9.0.jar *.java
E:srcmocki至-test>java -cp .;junit-4.10.jar;mocki至-all-1.9.0.jar FooServiceTest
null stringInteger