我正在将Powermock从我目前正在进行的项目中移除,因此我试图仅用Mockito(Mockito-Core-2.2.28)重写一些现有的unitary测试。
无法模拟/Spy类Com.ExternalPackagePath.ExternalClass
Mockito无法模仿/监视,因为:
public class MyClassToTest extends TestCase {
private MyClass myClass;
@Mock private Externalclass ext; // This class is final, I would like to mock it
@Override
protected void setUp() throws Exception {
MockitoAnnotations.initMocks(this); // <<<< The exception is thrown here
ext = Mockito.mock(Externalclass.class);
}
}
正如Mockito文档(https://github.com/Mockito/Mockito/wiki/what%27s-new-in-mockito-2,§mock the unmockable)中提到的,我添加了org.Mockito.plugins.mockmaker文件。这是我的项目的树:
谢谢!
奇怪的是,你的解决方案似乎起作用了。
根据他们在Github上的文档,它说。
对最终类和方法的模拟是一个潜在的、可选的特性。它使用Java代理检测和子类化的组合,以支持这些类型的可模仿性。由于此功能与我们当前的机制不同,并且此功能有不同的限制,并且由于我们希望收集经验和用户反馈,因此必须显式激活此功能才能可用;通过mockito扩展机制,可以创建文件src/test/resources/mockito-extensions/org.mockito.plugins.mockmaker
,其中包含一行:
mock-maker-inline
创建此文件后,Mockito将自动使用此新引擎,您可以执行以下操作:
final class FinalClass {
final String finalMethod() { return "something"; }
}
FinalClass concrete = new FinalClass();
FinalClass mock = mock(FinalClass.class);
given(mock.finalMethod()).willReturn("not anymore");
assertThat(mock.finalMethod()).isNotEqualTo(concrete.finalMethod());
在后续的里程碑中,团队将带来一种使用该特性的编程方式。我们将识别并为所有不可模仿的场景提供支持。请继续关注并告诉我们您对此功能的看法!
我的工作结构现在看起来是这样的。
我在github示例中发现了如何使用standart Mockito创建final类(BluetoOthgatt.class)实例: 但从Mockito常见问题: Mockito的局限性是什么 需要java 1.5+ 无法模拟最终类 ... 我检查了它是来自标准android-sdk的BluetoothGatt,所以它看起来像模拟的最终类。现在我尝试build project,以确保该测试工作正常
我无法使用mockito2模拟一个Kotlin final类。另外我还在用Robolectric。 这是我的测试代码: 请注意,我使用的是Mockito Version2,我使用的是依赖项,它自动启用模拟最终类的功能。
问题内容: 我上了最后一堂课,像这样: 我在其他这样的班级中使用这个班级: 在我的JUnit测试类中,Seasons.java我想模拟RainOnTrees该类。我该如何使用Mockito做到这一点? 问题答案: 仅在Mockito v2中可以模拟最终/静态类/方法。 将此添加到你的gradle文件中: 使用Mockito常见问题解答中的 Mockito v1,这是不可能的: `What are
我有最后一节课。 org.mockito.exceptions.base.MockitoExc0019:不能模拟/间谍类改造2.响应Mockito不能模拟/监视以下内容:-最终类-匿名类-原始类型 如何使用Powermockito模拟响应类?
有没有可能的方法来模拟一个私人的最终场? 提前谢谢你们。
} 当我做它将打印芒果,但它仍然在打印苹果。如果有人能帮助我只使用MOCKITO而不是PowerMock等。