私は次のように埋め込まれたガラス魚を使用しました:
public static void createContainer() throws IOException {
File target = new File("target/classes");
Map<String, Object> properties = new HashMap<String, Object>();
properties.put(EJBContainer.MODULES, target);
properties.put("org.glassfish.ejb.embedded.glassfish.installation.root",
"/opt/glassfish3/glassfish");
container = EJBContainer.createEJBContainer(properties);
context = container.getContext();
}
@AfterSuite(alwaysRun = true)
public static void closeContainer() throws NamingException {
// close container
}
// I use this method to lookup
public static <T> T lookupBy(Class<T> type) {
try {
return (T) context.lookup("java:global/classes/" + type.getSimpleName());
} catch (NamingException ex) {
throw new RuntimeException(ex);
}
}
問題は、埋め込まれたGlassfishが「target / classes」のクラスを使用し、mavencoberturaが「target/generated-classes/cobertura」を使用することです。次に、最初にテストを実行しても問題ありませんが、2回目に、coberturaを実行すると、java.lang.RuntimeException:javax.naming.NamingExceptionを受け取ります(おそらく、coberturaが「target /generated-classes/cobertura」に取り組んでいるためです。 「glassfishが「ターゲット/クラス」に取り組んでいる間)。
この問題を解決するためのアイデアはありますか?