我正在尝试使用 Arquillian 为一个已经存在的项目运行一些单元测试。
我的基本测试:
@RunWith(Arquillian.class)
public class InferenceTest {
@EJB private InferenceEJB inferenceEJB;
@Deployment
public static JavaArchive createDeployment() {
return ShrinkWrap.create(JavaArchive.class)
.addClasses(...my classes...)
.addPackages(false, ...packages from my classes...)
.addAsManifestResource(
EmptyAsset.INSTANCE,
ArchivePaths.create("beans.xml")
);
}
@Test
public void testInference() throws NamingException {
assertNotNull("Successfully injected an EJB", inferenceEJB);
}
}
当我用 maven (mvn test) 运行它时,我遇到了一大堆问题。基本上,它们归结为三件事:
- “严重”消息表明某些 EJB(此处未进行测试,并且未注入此测试使用的任何内容)未解决,例如
严重:部署应用程序时出现异常 [e03a719e-27d5-4cdd-af7f-70831402560c]:无法解析引用本地 ejb-ref 名称=......ExportEJB/managerEJB,本地 3.x 接口 =...... .DataManagerEntity,ejb-link=null,lookup=,mappedName=,jndi-name=,refType=Session PlainTextActionReporterFAILUREDescription:部署期间发生部署 AdminCommandError:部署应用程序时出现异常 [e03a719e-27d5-4cdd-af7f-70831402560c]:无法解决参考 Local ejb-ref name=.......ExportEJB/managerEJB,Local 3.x interface =.......DataManagerEntity,ejb-link=null,lookup=,mappedName=,jndi-name= ,refType=会话。有关详细信息,请参阅 server.log。
- 测试失败,因为 inferenceEJB 为空。
我试图通过将所有相关的类/包添加到@Deployment 来解决第一个问题,但没有成功。我不知道是什么导致了最后一个。
有人有什么想法吗?