我刚刚开始使用 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 窗口上看到页面被正确发布和重定向。我试图让它不重定向等,但没有任何帮助。
我觉得我缺少一些基本而简单的东西,但不知道是什么!
非常感谢任何帮助。
谢谢。