我想爲我的無狀態ejb + jpa演示代碼編寫一個junit測試。我認爲這實際上不是一個junit測試,而是一個集成測試。無狀態ejb + jpa的junit測試
我有一個無狀態的ejb,使用注入的EntityManager和PostgreSQL數據庫服務器。我使用CDI(Spring並未在我的項目中使用)和EclipseLink與persistent.xml文件。我的應用程序將在GlassFish服務器上執行。
我想寫一個檢查完整邏輯的測試:在我的示例無狀態ejb上調用一個方法,並將數據保存到內存數據庫中。我想用我的測試啓動內存數據庫,並在執行測試類時停止它。
EJB類:
@Stateless
public class PropertyServiceImpl implements PropertyService {
@PersistenceContext(name = "anything-jndi-em")
private EntityManager em;
public String getStringValue(final String key) {
Property property = em.createNamedQuery("Property.findByKey", Property.class)
.setParameter("key", key)
.getSingleResult();
return property.getValue();
}
}
enitity類:
@Entity
@Table(name = "APPLICATION_SETTING")
@NamedQueries({
@NamedQuery(name = "Property.findByKey", query = "select a from Property a where a.key = :key and a.status = 1")
})
public class Property
{
@Id
@SequenceGenerator(name = "APPLICATION_SETTING_SEQ", sequenceName = "APPLICATION_SETTING_SEQ", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "APPLICATION_SETTING_SEQ")
@Column(name = "ID", unique = true, nullable = false)
private Long id;
@Column(name = "KEY", length = 200, nullable = false)
private String key;
...
}
如果我是正確的,我需要按照下面的步驟:
- 創建一個新的文件persistent.xml將連接到內存中的dadabase並將其放在/ test/Resources/META-INF文件夾下的正確的jdbc連接參數
- 添加一些POM依賴關係的內存數據庫(例如:HSQLDB)和嵌入式EJB容器
- 創建一個簡單的PropertyServiceImplTest.java類
- 配置莫名其妙的/測試/資源/ META-INF /持續性。 xml文件將用戶通過我的測試類
- 初始化嵌入式EJB容器並啓動內存數據庫
- 執行我的六月測試方法:
@Test public void testGetStringValue() { PropertyService service = new PropertyServiceImpl(); assertNotNull(service.getStringValue("abc")); }
你能幫我寫一個適合這個場景的正確的測試java類嗎?
你嘗試了嗎? –