Я хотел бы использовать аннотацию @Inject
в моем тестовом примере TestNG. Тест выполняется Arquillian в удаленном экземпляре JBoss AS 6. Тест в основном выглядит так:
Контрольный пример
public class WorksheetControllerTest extends Arquillian {
@PersistenceContext
@Produces
@Default
EntityManager em;
@Inject
private UserTransaction utx;
@Deployment
public static WebArchive createTestArchive() {
return ShrinkWrap
.create( WebArchive.class, "test.war" )
.addClasses( SomeClass.class )
.addAsWebInfResource( new ByteArrayAsset( "<beans />".getBytes() ), ArchivePaths.create( "beans.xml" ) )
.addAsResource( "persistence-test.xml", "META-INF/persistence.xml");
}
//@BeforeClass
//@BeforeTest
@BeforeMethod
public void initTestData() throws Exception {
// ...
utx.begin();
em.persist( someEntity );
utx.commit();
}
@Test
public void testGetEmployeeFromTimesheet() throws Exception {
// ...
}
}
Работает, когда ...
Если я вручную вызываю метод initTestData()
в одном методе тестирования, я правильно ввел ресурсы для использования.
Не работает, когда ...
Если я использую какие-либо из приведенных выше аннотаций (@BeforeClass
, @BeforeTest
, @BeforeMethod
), тестовый сценарий не пройден, поскольку все введенные ресурсы имеют значение null (utx и em и некоторые другие классы, которые я хочу протестировать) .
Итак, я спрашиваю себя и вас, людей: что там не так?
С уважением,
Себастьян