我目前正在尝试针对我想通过TestNG启动的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跑者那里得到一个例外,其中说#34;没有找到任何免费节点:[DynamicGraph&#34;我想这是因为我在一个测试部分中使用了同一个类两次。< / p>
我应该如何构建我的TestNG套件xml,或者用什么样的TestNG功能以干净的方式完成我的任务?
答案 0 :(得分:0)
您应该查看the TestNG documentation。
顺便说一下,据我了解你的需要,你想在一组测试之前启动mongo并在它们之后停止它。您可以使用@Before/AfterGroup("mongodb")
(但是您必须激活该群组,因为即使测试是群组的一部分,testng也不会这样做)或@Before/AfterTest
。
public class EmbeddedMongoControllerTest {
private static EmbeddedMongoController mongoController;
@BeforeTest // or @BeforeGroup("mongodb")
@Parameters({ "mongoHost", "mongoPort"})
public void startEmbeddedMongoDb(@Optional("localhost") String host, @Optional("27017") int port) {
mongoController = new EmbeddedMongoController();
mongoController.start(host, port);
}
@AfterTest // @AfterGroup("mongodb")
public void stopEmbeddedMongoDb() {
mongoController.stop();
}
}
<suite name="EmbeddedMongoSmokeTest" verbose="1">
<parameter name="mongoPort" value="27018"/>
<test name="EmbeddedMongoSmokeTest">
<!--If @Before/AfterGroup usage <groups>
<run>
<include name="mongodb"/>
</run>
</groups> -->
<classes>
<class name="com.frequentis.ps.platform.tests.persistence.EmbeddedMongoControllerTest">
</class>
<class name="com.frequentis.ps.platform.tests.persistence.MongoDBSmokeTest"/>
</class>
</classes>
</test>
如果EmbeddedMongoControllerTest
,您可以从列表中删除MongoDBSmokeTest extends EmbeddedMongoControllerTest
。