gpt4 book ai didi

java - JMockit mock 没有被破坏

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:52:46 29 4
gpt4 key购买 nike

使用 JUnit 测试类-

有一个类 TestAccess.java

static private TestAccess instance = new TestAccess();
public static TestAccess getTestAccess() {
returns instance;
}

为了测试一个测试类 A.java 使用 JMockit 来模拟 getTestAccess 方法

@Mock
TestAccess mockTestaccess;

@Test
public void testMethod() {
new MockUp<TestAccess>() {
@mockit.Mock
public TestAccess getTestAccess() {
return mockTestaccess;
}
};

TestAccess test=TestAccess.getTestAccess();
}

在另一个类 B.java 我不想使用模拟和调用TestAccess.java如下

@Test
public void doTest()
{
TestAccess test=TestAccess.getTestAccess();
}

B.java 如果独立运行,则返回真正的 TestAccess 实例并且工作正常。

但是在 maven 运行期间它失败了,即使在 B.java 中也是如此TestAccess.getTestAccess() 返回 A.java 中定义的模拟,而不是预期的真实实例。

谁能指导如何解决这个问题。

最佳答案

您的示例甚至不会运行,因为 mockTestaccess 字段上的 @Mock 注释无效。我猜应该是@Mocked?如果是这样,则无需额外使用 new MockUp(),因为 mockTestaccess 上的 @Mocked 已经模拟掉了所有实例TestAccess 在该测试类的测试期间及之后将自动恢复。如果您的问题是 getTestAccess() 返回 TestAccess 的某个子类,那么您可能想看看 @Capturing 的模拟实例code> 也模拟子类的实例。

关于java - JMockit mock 没有被破坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39244089/

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