当我尝试运行代码时,它会导致我遇到一个异常。
LoginController.java
@Controller
public class LoginController {@ResponseBody
@RequestMapping(value="/login")
public String login(){
System.out.println("in login method");
String s = SampleClass.method();
System.out.println("String value : "+s);
return "welcome to login page";
}}
sampleClass.java
public class SampleClass {
public static String method(){
System.out.println("in static method");
return "static method";
}}
@PrepareForTest(SampleClass.class)
public class LoginControllerTest {
private MockMvc mockMvc;
@InjectMocks
private LoginController loginController;
@Before
public void setUp() {
System.out.println("in setup");
PowerMockito.mockStatic(SampleClass.class);
MockitoAnnotations.initMocks(this);
mockMvc = MockMvcBuilders.standaloneSetup(loginController).build();
System.out.println("setupdone");
}
@Test
public void loginTest() throws Exception{
System.out.println("in login test");
PowerMockito.when(SampleClass.method()).thenReturn("hello");
mockMvc.perform(get("/login"))
//.andDo(print())
.andExpect(status().isOk());
System.out.println("test completed");
}}
MissingMethodInvocationException:when()需要一个必须是“mock上的方法调用”的参数。例如:when(mock.getarticles()).ThenReturn(articles);
此外,出现此错误的原因可能是:1。您使用final/private/equals()/hashCode()方法中的任一个作为存根。这些方法不能被截取/验证。不支持在非公共父类上声明的模拟方法。2.内部when()不是对mock而是对其他对象调用method。
在org.powermock.api.mockito.powermockito.when(powermockito.java:495)在com.junit.example.controller.logincontrollertest.setup(logincontrollertest.57)在sun.reflect.nativeMethodAccessorImpl.Invoke0(原生方法)在sun.reflect.nativeMethodAccessorImpl.Invoke(未知源)在sun.reflect.delegatingmethodAccessorImpl.Invoke(未知源)ArentRunner.3.在org.junit.runners.ParentRunner.1.在org.junit.runners.ParentRunner.Runchildre(ParentRunner.java:63)在org.junit.runners.ParentRunner.Runchildre(ParentRunner.java:236)在org.junit.runners.ParentRunner.Access$000(ParentRunner.java:53)在org.junit.runners.ParentRunner.229)在org.junit.runners.ParentRunner.229)在
有谁能帮我解决问题吗?
根据文档,您没有正确使用以下内容:https://github.com/powermock/powermock/wiki/mockitousage
从文档中:
@PrepareForTest(static.class)
注释类(您没有执行此操作)powermockito.mockStatic(static.class);
mockito.when()
。您正在使用PowerMockito.when()
不幸的是: TweetServiceTest.java Hibernateutil.java
我正在编写一个类的单元测试,但我得到了一个错误 when()需要一个参数,该参数必须是模拟上的方法调用 错误:
问题内容: 我有一个使用Mockito和Spring Test框架的非常简单的测试用例。当我做 我得到这个例外。 我尝试使用不同的方法,但继续收到此错误消息。我在Mockito中使用Spring 3.1.0.RELEASE。请分享并指导我正确的方向。 问题答案: 您需要先创建pcUserService的MOCK,然后使用该模拟。
我没有使用任何框架 编辑测试代码 saveServlet.java
当我运行方法时,结果1和2是相同的,我需要结果是不同的数据集,因为我通过不同的数据集。 这是我目前所掌握的。 而主要的方法代码是: 结果在两个相同的数据集[100.0,200.0,300.0]时打印stat1和stat。 我需要stat 1为10.0、20.0、30.0和stat 2为100.0、200.0、300.0 我试图改变…的命令 至 但这给了我同样的结果。我如何解决这个问题?
我在将这部分Java转换为Kotlin时遇到了问题: 方法的第二个参数(注意不是集合)接受。我尝试了几个解决方案,包括提供一个lambda: 但这导致: 错误:(32,38)Kotlin:意外标记 错误:(33,38)Kotlin:意外标记 错误:(31,56)Kotlin:类型不匹配:推断的类型是Kfunction1<@parametername mutablehttpresponse<>?,u