我想@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
),测试用例将失败,因为所有注入的资源都是空的(utx 和 em 以及我想测试的其他一些类)。
所以,我在问自己和你们:那里出了什么问题?
亲切的问候,塞巴斯蒂安