0

私は Arquillian Warp を使い始めたばかりで、つまずきにぶつかったようです。

登録ページの基本的な UI テストがあります

@WarpTest
@RunWith(Arquillian.class)
public class TestProfileEdit extends AbstractUsersTest {

@Drone
FirefoxDriver browser;

@Page
EditProfilePage editProfilePage;

@Page
LoginPage loginPage;

@ArquillianResource
private URL baseURL;

@Deployment
public static Archive<?> createLoginDeployment() throws IOException {
      // trimmed for brevity
}

@Before
public void setup() throws MalformedURLException{

    final URL loginURL = new URL(baseURL, "login.jsf");
    browser.navigate().to(loginURL);
    loginPage.login("test@domain.com", "password");

    final URL pageURL = new URL(baseURL, "profile/edit.jsf");
    System.out.println(pageURL.toExternalForm());
    browser.navigate().to(pageURL);

}

@After
public void tearDown() {
    browser.manage().deleteAllCookies();
}

@Test
@RunAsClient
public void testSaveData() {

    editProfilePage.getDialog().setFirstName("Test First Name");

    Warp.execute(new ClientAction() {

        @Override
        public void action() {
            editProfilePage.getDialog().save();
        }
    }).verify(new TestProfileOnServer());

}


@SuppressWarnings("serial")
public static class TestProfileOnServer extends ServerAssertion {

    @Inject
    private EntityManager em;

    @Inject
    private Identity identity;

    @Inject
    Credentials credentials;

    @AfterPhase(Phase.RENDER_RESPONSE)
    public void testSavedUserProfile()  {


        System.out.println("RUNNING TEST");

        String username = identity.getUser().getId();

        TypedQuery<UserProfile> q = em.createQuery(
                "SELECT u from UserProfile u where u.userIdentity.name like :username", UserProfile.class);

        UserProfile p;
        p = q.setParameter("username", username).getSingleResult();

        assertEquals("Test First Name", p.getFirstName());
    }

}

}

私は testSavedUserProfile() メソッドでさまざまな組み合わせを試しましたが、それをトリガーするのはまったく運がありませんでした。

テストは常に終了します

java.lang.IllegalStateException: java.util.concurrent.ExecutionException: org.jboss.arquillian.warp.client.execution.AssertionHolder$ServerResponseTimeoutException

開かれたFirefoxウィンドウで、ページが投稿され、正しくリダイレ​​クトされるのを見ることができます。リダイレクトしないようにしようとしましたが、何も役に立ちませんでした。

基本的でシンプルなものが欠けているように感じますが、何がわかりません!

どんな助けでも大歓迎です。

ありがとう。

4

1 に答える 1

1

最近、Arquillian Warp で同様の問題に遭遇しました。

私のコードが呼び出されなかった理由の 1 つは、Arquillian がサーバー sde サーブレット フィルターを Web アーカイブ (WAR) 展開のみにマージしたことです。EAR デプロイメントも JAR デプロイメントも、すぐに使用できるものではありません。

私の具体的な問題 (EAR デプロイメント) については、テスト済みの WAR をアセンブルするときに Arquillian フィルターを自分でマージする方法でテスト クラスを変更し、それを EAR デプロイメントにパックしました。

私が遭遇したもう 1 つの問題は、AfterServlet イベントが単体テストの実行範囲内ではなく、サーブレット フィルターのクリーンアップ コードの一部として発生することです。私はこのロジックが完全に壊れていると信じており、私見がロジックを正しく処理しているサーブレットフィルターのプライベートフォークを構築しています。

于 2013-01-14T18:07:45.087 に答える