我有一个带有静态方法的惰性单例MongoConnection
类,该静态方法返回MongoConnection.getClient()
上的MongoClient
实例:
public class MongoConnection {
private static MongoClient mongoclient;
private MongoConnection() {
}
public static MongoClient getClient() {
if (mongoclient == null) {
// code to initialize MongoClient
}
return mongoclient;
}
}
我如何使用PowerMockito模拟MongoConnection
单例并测试GetClient
方法。
我没有选择singleton,因为应用程序中只有MongoClient
的单个实例(根据MongoDB文档)。
谢谢你
下面的示例演示如何将Mockito与PowerMockito一起使用来模拟MongoConnection.getMongoClient()
:
@RunWith(PowerMockRunner.class)
@PrepareForTest({MongoConnection.class})
public class ATest {
@Test
public void aTestWhichRequiresMockingMongoConnection() {
MongoClient mongoClient = Mockito.mock(MongoClient.class);
PowerMockito.mockStatic(MongoConnection.class);
Mockito.when(MongoConnection.getClient()).thenReturn(mongoClient);
// set up some expectations on the mocked MongoClient returned by MongoConnection
Mockito.when(mongoClient.getDatabase("aDatabaseName")).thenReturn(...);
// ... etc
}
}
此类验证的对象为:
我正在为一个单例Java类编写单元测试(使用JUnit和Mockito)。我无法更改类实现本身。 使用PowerMockito,它是这样的(并且工作): 要求重写测试,而不使用PowerMock或PowerMockito或任何其他静态模拟API。由于我不能将单例类更改为使用依赖注入,我不确定什么是这样做的好方法。 任何帮助都将不胜感激。
我有一个类需要进行单元测试: 我有一个测试用例: 当我运行测试用例时,没有使用ActiveMQConnectionFactory的模拟对象。相反,正在使用实际的实现,并且正在建立TCP连接: 我尝试了Powermockito和Mockito,但都失败了。如何模拟对象,如何成功运行测试用例? 我是单元测试新手,试图从各个社区获得帮助,但没有找到合适的答案。任何帮助都将不胜感激。谢谢
为了测试我编码的私有方法之一,我需要模拟一个单例。 用PowerMockito测试了几种方法后: 我在UtilDatabaseEnrichissement的absract父类中将配置文件定义为常量,并在构造函数中使用。 我怎么测试这部分呢?
我试图在与TestNG的集成测试中用PowerMockito模拟一个静态方法,但迄今为止没有乐趣。 这种模拟机制在单元测试中有效,但在集成测试中无效。我得到以下错误: 根据本页,您可以/应该使用注释来消除类加载器问题。我尝试了几种(随机)组合(当然,一次一种): 我更进一步: 但这看起来像是一场自由式变化的大雁追逐: 其他资源建议使用,但如果我没弄错的话,这是针对JUnit的,我正在使用TestN
Android Studio 1.1 添加了单元测试支持,详细请看 Unit testing support。本章的其余部分描述的是 “instrumentation tests”。利用 Instrumentation 测试框架可以构建独立的测试 APK 并运行在真实设备(或模拟器)中进行测试。
英文原文:http://emberjs.com/guides/testing/unit/ 单元测试用于测试代码的一个小片段,确保其功能正常。与集成测试不同,单元测试被限定在一个范围内,并且不需要Ember应用运行。 全局 vs 模块 过去如果没有作为一个全局变量加载整个Ember应用,要对应用进行测试非常困难。通过使用模块(CommonJS,AMD等)来编写应用,可以只加载被测试的部分,而不用将其