gpt4 book ai didi

java - Jmockit 模拟问题

转载 作者:行者123 更新时间:2023-11-30 08:48:07 36 4
gpt4 key购买 nike

我是 Junit 和 Jmockit 的新手。我写了一个示例并想使用模拟对其进行测试,但我遇到了一个错误。

public class First {

public static int square(int number) {

int result = number * number;
return result;
}
}

public class Second {

public static void main(String[] args) {

int number = 5;

number = new Second().xi(number, number);
System.out.println(number);
}

public int xi(int number, int number1) {
number = First.square(number) + First.square(number1);
return number;

}

}

public class SecondTest {

Second second = new Second();

@Test
public void testXi() {
new Expectations() {

{

First.square(5);
result = 25;
}

};
int mk = second.xi(5, 5);
assertEquals(50, mk);
}
}

当我尝试运行这个 SecondTest.java 时,出现了以下错误。

java.lang.IllegalStateException: Missing invocation to mocked type at this point; please make sure such invocations appear only after the declaration of a suitable mock field or parameter at SecondTest$1.(SecondTest.java:17) at SecondTest.testXi(SecondTest.java:12) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.lang.reflect.Method.invoke(Method.java:606) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.lang.reflect.Method.invoke(Method.java:606) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)

我在代码中找不到任何错误。

最佳答案

您应该在测试类(类级别,而不是方法级别)中声明类似@Mocked First firstInstance 的内容。

然后你需要做出期望firstInstance.square(5);结果 = 25

这实质上告诉 jmockit 您希望模拟 First 类,并且它应该将 First 类的所有实例与实例 firstInstance 交换。然后你告诉它你期望调用这个实例来调用方法 xi(int, int),值为 5, 5,你希望它返回 25。

关于java - Jmockit 模拟问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32111137/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com