assertAll 布尔值列表
assertAll a list of booleans
有一个用户可以访问的页面列表。 verifyAccess
具有 returns true/false 的功能,具体取决于用户尝试访问的页面。
例如 - 在个人资料页面上查找个人资料 IMG 定位器,在注销页面上查找注销按钮,等等...
我正在使用以下导入(JUnit API)
import org.assertj.core.api.SoftAssertions;
import org.junit.Assert;
import org.junit.jupiter.api.function.Executable;
像这样
List<Boolean> assertList = null;
for (int i = 0; i < pageList.size(); i++) {
String pageName = pagesList.get(i);
assertList = new LinkedList<>();
assertList.add(accessCheck.verifyAccessToPage(userRole, pageName));
}
assertAll((Executable) assertList.stream());
}
public boolean verifyAccessToPage(String userRole, String pageName) {
switch (page) {
case "Profile page":
return profilePage.profileImg.isCurrentlyEnabled();
case "Create(invite) users":
jobslipMyCompanyPage.clickInviteBtn();
return logoutPage.logoutBtn.isCurrentlyEnabled();
}
}
问题是 assertList
列表大小始终为 1,但 for
循环 运行 12 次,共 12 页。另外 assertAll
给出以下错误 java.lang.ClassCastException: java.util.stream.ReferencePipeline$Head cannot be cast to org.junit.jupiter.api.function.Executable
我做错了什么?
您可以使用以下库:
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.oneOf;
然后这样断言:
assertThat(assertList, is(oneOf(expectedBooleanValues)));
expectedBooleanValues 可以是 true 或 false
Issue is assertList list size is always 1, but for loop run 12 times for 12 pages.
for 循环的每个 运行 都会再次初始化变量 assertList
。因此,它始终只包含一个元素。
要断言 verifyAccessToPage
的每个结果,您可以使用 AssertJ 的 SoftAssertions:
import static org.assertj.core.api.SoftAssertions.assertSoftly;
assertSoftly(soft -> {
for (int i = 0; i < pageList.size(); i++) {
String pageName = pagesList.get(i);
boolean accessToPage = verifyAccessToPage(userRole, pageName);
soft.assertThat(accessToPage).as("access to page %s for role %s", pageName, userRole).isTrue();
}
});
如果您想测试 verifyAccessToPage
的调用不会引发异常,您可以将代码更改为:
import static org.junit.jupiter.api.Assertions.assertAll;
List<Executable> assertList = new LinkedList<>();
for (int i = 0; i < pageList.size(); i++) {
String pageName = pagesList.get(i);
assertList.add(() -> accessCheck.verifyAccessToPage(userRole, pageName));
}
assertAll(assertList);
有一个用户可以访问的页面列表。 verifyAccess
具有 returns true/false 的功能,具体取决于用户尝试访问的页面。
例如 - 在个人资料页面上查找个人资料 IMG 定位器,在注销页面上查找注销按钮,等等...
我正在使用以下导入(JUnit API)
import org.assertj.core.api.SoftAssertions;
import org.junit.Assert;
import org.junit.jupiter.api.function.Executable;
像这样
List<Boolean> assertList = null;
for (int i = 0; i < pageList.size(); i++) {
String pageName = pagesList.get(i);
assertList = new LinkedList<>();
assertList.add(accessCheck.verifyAccessToPage(userRole, pageName));
}
assertAll((Executable) assertList.stream());
}
public boolean verifyAccessToPage(String userRole, String pageName) {
switch (page) {
case "Profile page":
return profilePage.profileImg.isCurrentlyEnabled();
case "Create(invite) users":
jobslipMyCompanyPage.clickInviteBtn();
return logoutPage.logoutBtn.isCurrentlyEnabled();
}
}
问题是 assertList
列表大小始终为 1,但 for
循环 运行 12 次,共 12 页。另外 assertAll
给出以下错误 java.lang.ClassCastException: java.util.stream.ReferencePipeline$Head cannot be cast to org.junit.jupiter.api.function.Executable
我做错了什么?
您可以使用以下库:
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.oneOf;
然后这样断言:
assertThat(assertList, is(oneOf(expectedBooleanValues)));
expectedBooleanValues 可以是 true 或 false
Issue is assertList list size is always 1, but for loop run 12 times for 12 pages.
for 循环的每个 运行 都会再次初始化变量 assertList
。因此,它始终只包含一个元素。
要断言 verifyAccessToPage
的每个结果,您可以使用 AssertJ 的 SoftAssertions:
import static org.assertj.core.api.SoftAssertions.assertSoftly;
assertSoftly(soft -> {
for (int i = 0; i < pageList.size(); i++) {
String pageName = pagesList.get(i);
boolean accessToPage = verifyAccessToPage(userRole, pageName);
soft.assertThat(accessToPage).as("access to page %s for role %s", pageName, userRole).isTrue();
}
});
如果您想测试 verifyAccessToPage
的调用不会引发异常,您可以将代码更改为:
import static org.junit.jupiter.api.Assertions.assertAll;
List<Executable> assertList = new LinkedList<>();
for (int i = 0; i < pageList.size(); i++) {
String pageName = pagesList.get(i);
assertList.add(() -> accessCheck.verifyAccessToPage(userRole, pageName));
}
assertAll(assertList);