Próbuję umieścić warunek if else w oświadczeniu assert
Próbowałem tego, ale nie działa, muszę zweryfikować dwa ciągi jeden po drugim
String comment = driver.findElement(By.xpath("//*[@id='historyRow']/tbody/tr[1]/td[4]")).getText();
System.out.println(comment);
if (comment == "abc") {
Assert.assertEquals(comment, "abc");
}
else{
Assert.assertEquals(comment, "xy");
}
driver.findElement(By.linkText("Details")).click();
3 odpowiedzi
Używasz == do porównywania ciągów. Ponieważ ciągi znaków są obiektami, sprawdza, czy obie strony odnoszą się do dokładnie tego samego obiektu. Jeśli chcesz sprawdzić, czy wartość Strings jest równa, użyj:
"abc".equals(comment)
Wygląda na to, że chcesz porównać z warunkiem or
, sugeruję użycie .assertTrue
.
Użyj .equals()
, aby porównać ciąg, a nie ==
.
String comment = driver.findElement(By.xpath("//*[@id='historyRow']/tbody/tr[1]/td[4]")).getText();
boolean condition = false;
if(comment.equals("abc") || comment.equals("xy")) {
condition = true;
}
Assert.assertTrue(condition);
Której biblioteki używasz do asercji? Oto jak możesz potwierdzić, jeśli string jest równy jednemu z kilku z junit:
String s1 = "abc";
String s2 = "xyz";
String s3 = "https://junit.org";
Assert.assertThat( s1, AnyOf.anyOf( IsEqual.equalTo( "abc" ), IsEqual.equalTo( "xyz" ) ) ); // passed
Assert.assertThat( s2, AnyOf.anyOf( IsEqual.equalTo( "abc" ), IsEqual.equalTo( "xyz" ) ) ); // passed
Assert.assertThat( s3, AnyOf.anyOf( IsEqual.equalTo( "abc" ), IsEqual.equalTo( "xyz" ) ) ); // failed
Inny sposób na to samo potwierdzenie, którego możesz użyć zarówno z junit, jak i testNG:
Assert.assertTrue(s1.matches( "abc|xyz" )); // passed
Assert.assertTrue(s2.matches( "abc|xyz" )); // passed
Assert.assertTrue(s3.matches( "abc|xyz" )); // failed
Różnica polega na komunikatach o błędach.
Pierwszy:
java.lang.Błąd potwierdzenia: Oczekiwane: („abc” lub „xyz”) ale: było „https://junit.org"
A po drugie - po prostu pusty błąd asercji.
Podobne pytania
Powiązane pytania
Nowe pytania
java
Java to język programowania wysokiego poziomu. Użyj tego tagu, jeśli masz problemy z używaniem lub zrozumieniem samego języka. Ten tag jest rzadko używany samodzielnie i jest najczęściej używany w połączeniu z [spring], [spring-boot], [jakarta-ee], [android], [javafx], [hadoop], [gradle] i [maven].
driver.findElement(By.linkText("Details")).click();
nie wewnątrz blokuelse
.