4

@InjectTestNGテストケースでアノテーションを使用したいと思います。テストは、リモートのJBossAS6インスタンスでArquillianによって実行されます。テストは基本的に次のようになります。

テストケース

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、およびテストしたい他のクラス)であるため、テストケースは失敗します。

だから、私は自分自身とあなたの人々に尋ねています:そこで何が悪いのですか?

よろしく、セバスチャン

4

1 に答える 1

3

@Before*メソッドは2回呼び出されているようです。https://issues.jboss.org/browse/ARQ-104?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12577331#comment-12577331も参照してください。

注釈付きのメソッドで注入されたリソースがnullであるかどうかを確認することで、うまくいくはずです。これですべてが正常に機能します。

于 2011-07-26T08:40:09.190 に答える