2016-08-22 127 views
0

您好我正在嘗試爲Java EE 7應用程序測試我的Service和Dao層。Daqu和Arquillian服務的JUnit測試

所以我尋找測試解決方案遵循使用Arquillian與junit測試和野蠅遠程依賴的教程。

相對於實現已經產生,下面我帶的Arquillian JUnit測試道和服務接口:

@RunWith(Arquillian.class) 
public class GenericServiceTest { 

    @Inject 
    private EmployeeService employeeService; 

    @Deployment 
    public static JavaArchive createDeployment() { 
     return ShrinkWrap 
       .create(JavaArchive.class) 
       .addAsManifestResource("META-INF/persistence.xml", 
         "persistence.xml") 
       .addClasses(EmployeeDao.class, EmployeeDaoImpl.class, 
         EmployeeService.class, EmployeeServiceImpl.class, 
         Employee.class) 
       .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml"); 

    } 

    @Test 
    @Transactional 
    public void should_crud() { 
     // Gets all the objects 
     assertNotNull(employeeService); 
     Employee employee = employeeService.get(new Integer(1)); 
     assertNotNull(employee); 
    } 
} 

運行類作爲JUnit測試它不與這個錯誤的工作:

產生的原因: java.lang.Exception:「WFLYCTL0216:Management resource'[(\」deployment \「=> \」test.war \「)]'找不到'

如果已將任何類添加到ShrinkWrap中,則測試通過如下:

@RunWith(Arquillian.class) 
public class GenericDaoTest { 
@Inject 
private EmployeeService employeeService; 

    @Deployment 
    public static JavaArchive createTestableDeployment() { 
     final JavaArchive jar = ShrinkWrap.create(JavaArchive.class) 
      .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml"); 
    return jar; 
    } 

    @Test 
    public void should_crud() { 
    } 

} 

如何使用arquillian爲Java EE 7添加服務類實現創建工作測試?

而且我必須添加每個必須被調用的類和接口(例如所有實體,dao等類)或者只有服務接口和實現類?

非常感謝

+0

服務器找不到部署'test.war',因爲在創建此歸檔文件時出現錯誤。因此,您需要做的第一件事是將Java EE容器的記錄器級別從_INFO_增加到_DEBUG_,以在創建部署期間查看完成錯誤。順便說一下,是否有創建Java歸檔(JAR)的特殊原因?我們通常將Web存檔(WAR)部署到Java EE容器。 –

+0

我遵循了一些教程和Java EE7 petstore github項目中的示例https://github.com/agoncal/agoncal-application-petstore-ee7 – antonio

回答

0

既然你正在開發一個JavaEE應用,我建議你創建一個戰爭存檔,而不是蓋罐。 您可以使用

ShrinkWrap.addPackages(true, "com.yourpackage.name")添加整個包,因此您不必獨立添加類。

0

如果我正確地理解了這個問題,你想測試一個戰爭檔案。 如果是這樣的話,你應該改變

return ShrinkWrap 
      .create(JavaArchive.class) 

return ShrinkWrap 
      .create(WarArchive.class) 

此外,您應該添加您的persistence.xml文件的META-INF文件夾,如:

.addAsResource("test-persistence.xml", "META-INF/persistence.xml") 

如果你想在你的測試中使用註解@Transactional,你需要添加一些依賴到你的測試範圍。如果你還沒有添加它們,你可以閱讀http://arquillian.org/modules/transaction-extension/添加什麼依賴項。