【发布时间】:2016-12-11 23:54:58
【问题描述】:
我目前正在尝试对我想通过 TestNG 启动的 mongoDB 运行一些测试。
套件应该:
- 启动一个 mongoDB 实例(可能是嵌入式或单独的进程)
- 运行一个或多个测试(可能在不同的类或包中)
- 停止 mongoDB 实例
我试过了:
<suite name="EmbeddedMongoSmokeTest" verbose="1">
<parameter name="mongoPort" value="27018"/>
<test name="EmbeddedMongoSmokeTest">
<classes>
<class name="com.frequentis.ps.platform.tests.persistence.EmbeddedMongoControllerTest">
<methods>
<include name="startEmbeddedMongoDb" />
</methods>
</class>
<class name="com.frequentis.ps.platform.tests.persistence.MongoDBSmokeTest"/>
<class name="com.frequentis.ps.platform.tests.persistence.EmbeddedMongoControllerTest">
<methods>
<include name="stopEmbeddedMongoDb" />
</methods>
</class>
</classes>
</test>
@Test(groups = { "persistence", "mongodb"})
public class EmbeddedMongoControllerTest {
private static EmbeddedMongoController mongoController;
@Test
@Parameters({ "mongoHost", "mongoPort"})
public void startEmbeddedMongoDb(@Optional("localhost") String host, @Optional("27017") int port) {
mongoController = new EmbeddedMongoController();
mongoController.start(host, port);
}
@Test
public void stopEmbeddedMongoDb() {
mongoController.stop();
}
}
我从 TestNG 运行器那里得到一个异常,它说“在 [DynamicGraph 中找不到空闲节点”,我猜这是因为我在一个测试部分中使用了同一个类两次。
我应该如何构建我的 TestNG 套件 xml 或者我应该使用什么样的 TestNG 功能来以干净的方式完成我的任务?
【问题讨论】:
-
为什么不直接使用单例 - 也会是延迟初始化?
标签: testng