Ala*_*Dee 3 java junit glassfish java-ee
我正在我的Java EE应用程序中设置单元测试.我正在使用JPA,JSF,Netbeans和Glassfish.它也是我的第一个真正的java应用程序,请原谅我,如果答案是明显的愚蠢!
该测试使用EJBContainer,访问实体并尝试输入空记录.然后它尝试输入一个用户名太短的记录.我想确认抛出了正确的异常.
我可以添加,@Test(expected=javax.ejb.EJBException.class) 但会捕获容器可能抛出的任何异常.如果它不是我想知道的预期异常.(与捕获一个多用途的例外哲学相同,最佳实践是捕获特定的例外)
以下测试有助于说明:
//@Test(expected=javax.validation.ConstraintViolationException.class)
@Test(expected=javax.ejb.EJBException.class)
public void testCreate() throws Exception {
EJBContainer container = getContainer();//pull singleton container
AgentsFacade instance = (AgentsFacade) container.getContext().lookup("java:global/classes/AgentsFacade");
Agents badAgent = new Agents();
instance.create(badAgent);//null username
//Short username
Agents shortUsername = new Agents("srtnm");
instance.create(shortUsername);//must be > 6 in length
}
Run Code Online (Sandbox Code Playgroud)
以下是Agents实体的"username"属性的注释:
...
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(unique=true)
@Size(min=6, max=40)
@NotNull
private String username;
...
Run Code Online (Sandbox Code Playgroud)
如您所见,两个测试都应抛出javax.validation.ConstraintViolationException或其他一些异常.我可以在EJBException中的调试信息中看到它们.我不确定是否有办法"提取"正确的例外情况?
最后,我是一个总菜鸟.因此,如果我在错误的道路上徒步旅行,请告诉我.
谢谢.
--Update--
回应斯蒂芬,这是我想出的结果.
try {
//Null username
Agents badAgent = new Agents();
instance.create(badAgent);
fail("NULL agent added!");//should never reach this point.
} catch (EJBException e) {
Exception causedByException = e.getCausedByException();
if(!(causedByException instanceof javax.validation.ConstraintViolationException)){
fail("ConstraintViolationException wasn't thrown.");
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1754 次 |
| 最近记录: |