Я пытаюсь сделать простое приложение, используя JavaEE, и в настоящее время я застрял с тестом Arquillian. У меня есть класс BookRepository, как это:
package com.pluralsight.bookstore.repository;
import javax.transaction.Transactional;
import static javax.transaction.Transactional.TxType.SUPPORTS;
@Transactional(SUPPORTS)
public class BookRepository {
}
И тестовый класс BookRepositoryTest:
package com.pluralsight.bookstore.repository;
@RunWith(Arquillian.class)
public class BookRepositoryTest {
@Inject
private BookRepository bookRepository;
@Deployment
public static JavaArchive createDeployment() {
return ShrinkWrap.create(JavaArchive.class)
.addClass(BookRepository.class)
.addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml")
.addAsManifestResource("META-INF/test-persistence.xml", "persistence.xml");
}
@Test
public void create() {
assertNotNull(bookRepository);
}
}
Запуск результатов теста в:
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 9.864 sec <<< FAILURE!
create(com.pluralsight.bookstore.repository.BookRepositoryTest) Time elapsed: 0.287 sec <<< ERROR!
java.lang.NullPointerException
at com.pluralsight.bookstore.repository.BookRepositoryTest.create(BookRepositoryTest.java:38)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
...
Без каких-либо объяснений. Как я проверял с помощью assertNotNull, bookRepository всегда имеет значение null, поэтому инъекция здесь не работает, я думаю. Структура проекта выглядит следующим образом:
Я пытался найти ответ в течение некоторого времени, и я все еще на том же месте. Для контейнера я запускаю тест с удаленным wildfly, и в фоновом режиме работает WildFly.
Заранее спасибо за любую помощь!