我正在使用arquillian进行单元测试.我正在使用shrinkWrap创建部署jar.但为此我需要添加我的项目中使用的所有包,这些包的数量很多.
以下是我的测试文件
@RunWith(Arquillian.class)
public class GreeterTest {
@Deployment
public static JavaArchive createDeployment() throws NamingException {
return ShrinkWrap.create(JavaArchive.class, "test.jar")
.addPackage(ABC.class.getPackage())
.addPackage(EFG.class.getPackage())
.addPackage(HIJ.class.getPackage())
.addPackage(KLM.class.getPackage())
.addPackage(NOP.class.getPackage())
.addPackage(QRS.class.getPackage())
.addPackage(TUV.class.getPackage())
.addPackage(XYZ.class.getPackage())
.addAsResource("test-persistence.xml", "META-INF/persistence.xml")
.addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml");
}
@Inject
ABC abc;
@Inject
EFG efg;
@Inject
HIJ hij;
@Inject
KLM klm;
@Inject
NOP nop;
@Test
public void shouldBeAbleToInjectEJBAndInvoke() throws Exception {
abc.getDetail();
}
}
你可以看到.addPackage().我的项目中有数百个包.明显的代码大小将会大大增加
还有其他办法吗?或者我必须犯一些大错误
解决方法:
我建议你使用包路径的字符串表示:“com.root.core”等.还有方法:
addPackage(String pack)
addPackages(boolean recursive, String... packages)
最新的更适合你我猜,因为它为你提供了递归添加包的可能性,因此你避免重复包括每个包.例如:
.addPackages(true, "com.root")