我試圖讓我的web服務測試。這個web服務使用ejb和jpa來檢索它的數據。所以我想用這個arquillian擴展來完成這件事。arquillian持久性擴展不起作用
這是我的Arquillian測試類:
@RunWith(Arquillian.class)
public class PersonWebServiceIT {
private PersonWebService service;
@Deployment(testable = false)
public static Archive<?> createDeployment() {
return ShrinkWrap
.create(ZipImporter.class, "test.ear")
.importFrom(new File("simple-webservice-ear-1.0.0-SNAPSHOT.ear"))
.as(EnterpriseArchive.class);
}
@Test
@UsingDataSet("dataset.yml")
@SneakyThrows
public void testFindPersons(@ArquillianResource final URL deploymentUrl) {
loadService(deploymentUrl);
Assert.assertEquals(2, service.findPersons().size());
}
private void loadService(final URL deploymentUrl)
//load webservice
}
}
這是我的數據集/ dataset.yml文件:
person:
- id: 1
firstName: "stijn"
- id: 2
firstName: "cremers"
我arquillian.xml:
<?xml version="1.0" encoding="UTF-8"?>
<arquillian xmlns="http://jboss.com/arquillian" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://jboss.org/schema/arquillian
http://jboss.org/schema/arquillian/arquillian-1.0.xsd">
<extension qualifier="persistence">
<property name="defaultDataSource">java:/DefaultDS</property>
</extension>
</arquillian>
我的測試數據永遠不會被加載。我甚至嘗試了格式錯誤的yml文件,但即使如此我也沒有錯誤。
當我設置可檢驗爲真,以指定JDBC URL替代數據源名稱,我得到PersonWebServiceIT的了java.lang.ClassNotFoundException,因爲測試類未包含在部署中。我怎樣才能解決這個問題?我真的很想使用我在生產中使用的耳朵,以確保我的集成測試具有相同的依賴關係。 – cremersstijn
我已經問過這個問題的一個新問題:http://stackoverflow.com/questions/14713129/how-to-add-test-classes-to-an-imported-ear-file-and-run-server-side -with-arquill – cremersstijn