alibaba / alibaba/testable-mock

java.lang.NoSuchMethodError:Mock容器类下的@MockNew方法,无法通过@MockContainer继承生效

Open
#313 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Java
Stars
1.8k
Forks
306
PR merge metrics
No merged PRs in 30d

Description

```
public class TaskServiceServantImplTest {
@MockContainer(inherits = {TaskManagerMock.class})
public static class Mock {
}
@Test
public void getUserTaskList() throws Throwable {
TaskQuery taskQuery = AutoGenerateData.getTaskQuery();

TaskPageDTO taskPageDTO = taskService.getUserTaskList(taskQuery);//此处调用了 new TaskMessageManager(context)
}
}
public class TaskMessageManagerMock{
@MockNew
public TaskMessageManager createTaskMessageManager(ApplicationContext context) {
System.out.println("------Success createTaskMessageManager------");
return null;
}
}
```

将createTaskMessageManager()放入TaskServiceServantImplTest 的Mock下能生效
通过@MockWith绑定TaskMessageManagerMock能生效
唯独通过上面这种方法无法生效

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with the @MockContainer inheritance path shown in TaskServiceServantImplTest and trace how TaskManagerMock and TaskMessageManagerMock are discovered. Compare it with the working local Mock and @MockWith cases; done means the inherited @MockNew createTaskMessageManager method intercepts new TaskMessageManager(context) as expected.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
testing
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.