我想运行我的测试,我尝试了许多方法,MockUp x = new MockUp<Hello>调用getMockInstance(),但我总是遇到这个问题。我永远不能用mark @Mark来调用sayHello()?
<junit.version>4.12</junit.version>
<java.version>1.8</java.version>
<dependency>
<groupId>org.jmockit</groupId>
<artifactId>jmockit</artifactId>
<version>1.26</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>我的班级:
public class Hello {
public String sayHello() {
return "hello world";
}
}我的测试:
@RunWith(JMockit.class)
public class HelloTest {
@Tested
public Hello mock;
@Test
public void myOwnTest() {
new MockUp<Hello>() {
@Mock
public String sayHello() { // Method 'sayHello()' is never used
return "Mock hello world...!";
}
};
String res = mock.sayHello();
}
}控制台:
Matching real methods not found for the following mocks:发布于 2022-11-25 17:45:50
首先,将自己更新到JMockit的最新版本(1.49) (或者可能是分叉/改进的1.49.2)。小版本修复和改进了很多东西。
其次,"@RunWith“在现代版本中已经消失,取而代之的是javaagent。
看上去你在做一次香草式的嘲弄练习。假设您可以访问它,使用期望值要容易得多,这是因为您有一个@Tested实例。
public class HelloTest {
@Tested
public Hello mock;
@Test
public void myOwnTest() {
new Expectations {{
mock.sayHello();
result "Mock hello world...!";
}};
String res = mock.sayHello();
assertEquals("Mock hello world...!", res);
}
}MockUp方法也会起作用,但这通常只在更奇特的情况下使用(例如,您需要改变某个深层次类的行为,这与您正在测试的内容非常不同)。通常,只适用于不能以其他方式@ some (等)的类。
https://stackoverflow.com/questions/73874592
复制相似问题