Cześć,
stack: gradle, kontener aplikacji Wildfly, JavaEE 7, EJB 3.1, wbudowany Glassfish do testow.
chcę uruchomić test repozytorium (takie proof of concept) w kontenerze przy użyciu Arquilliana. Niestety nie mogę poradzić sobie z odpowiednimi zależnościami, tak aby chociaż najbardziej dumb test się uruchomił.
Z grubsza klasy wygladają tak:
public interface Repository<T> {
void persist(T entity);
void merge(T entity);
void remove(T entity);
void flush();
Optional<T> findByID(Class<T> entityClazz, Object id);
List<T> findByAll(Class<T> entityClazz);
List<T> findDetachedByAll(Class<T> entityClazz);
}
@Stateless
@JakisContext
public class JakiesRepositoryImpl implements Repository<JakiesEntity> {
@PersistenceContext
private EntityManager entityManager;
@Override
public Optional<JakiesEntity> findByName(String name) {
TypedQuery<JakiesEntity> query =
entityManager.createQuery("SELECT p FROM JakiesEntityp WHERE p.name = :name",
JakiesEntity.class);
query.setParameter("name", name);
return query.getSingleResult();
}
itd...
@RunWith(Arquillian.class)
public class SimpleRepoWithMockTest {
private final static String NAME = "NAME123";
@Inject
@JakisContext
private TenantRepository tenantRepository;
@Deployment
public static JavaArchive createDeployment() {
return ShrinkWrap.create(JavaArchive.class)
.addClasses(jakiesRepository.class, jakiesRepositoryImpl.class)
.addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml");
}
@Test
public void isEntitySaved() {
JakiesEntity jakiesEntity= jakiesRepository.findByName(NAME);
Assert.assertEquals(NAME, jakiesEntity.getName());
}
}
Ostatnia wersja zaleznosci (po wielu probach :) ):
testCompile group: 'org.jboss.shrinkwrap.resolver', name: 'shrinkwrap-resolver-depchain', version: '3.1.3', ext: 'pom'
compile group: 'org.jboss.arquillian', name: 'arquillian-bom', version: '1.4.0.Final', ext: 'pom'
testCompile group: 'org.jboss.arquillian.container', name: 'arquillian-glassfish-embedded-3.1', version: '1.0.2'
testCompile group: 'org.jboss.arquillian.junit', name: 'arquillian-junit-container', version: '1.4.0.Final'
testCompile group: 'org.glassfish.main.extras', name: 'glassfish-embedded-all', version: '5.0'
Nie patrzcie proszę na nazewnictwo, nazwy i klasy uproszczone z kodu w pracy. Próbowalem różnych źrodeł od GH do wszelakich odp na stacku i niestety ani razu nie udalo mi się tego odpalić. Niestety wiekszość jakiś guidow jest dla Mavena z dodatkiem pluginów do niego. Fajnie by było jakby ktoś oprócz rozwiązania nakreślił o co chodzi z tym BOM, pierwszy raz spotykam się z takimi zależnościami.
Z góry dzięki za odp,
Pozdrawiam!