- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我要延期基类 来自所有测试用例类。
对于某些测试用例,我想使用管理员凭据登录,而对于某些测试用例,我想使用客户登录。
以前此代码运行正常,因为 launchBrowserAndLogin() 方法没有任何参数。
有没有办法用参数扩展类?
这是我的代码:
public class BaseClass {
public BaseClass() {
}
@BeforeMethod
public void launchBrowserAndLogin(String userType) {
if(userType.equals("Admin")) {
launchBrowserAndUrl(Constants.ADMIN_URL);
login(Constants.ADMIN_USER_NAME, Constants.ADMIN_USER_PASSWORD);
}
if(userType.equals("Customer")) {
launchBrowserAndUrl(Constants.CUSTOMER_TEST_URL);
login(Constants.CUSTOMER_USER_NAME, Constants.CUSTOMER_USER_PASSWORD);
}
}
@AfterMethod
public void tearDown() {
TestDriver.getDriver().quit();
}
}
public class AssignEditDeleteRoleAccessibilityTest extends BaseClass {
CreateUser newUser = new CreateUser();
RoleAssignmentAccessValidation roleAccessValidation = new RoleAssignmentAccessValidation();
@DataProvider(name = "AssignEditDeleteRoleAccessibilityTest")
public static Object[] roleNames() {
return new Object[] {Constants.AGENCY_ASSISTANT_ROLE_NAME, Constants.OPS_MANAGER_ROLE_NAME};
}
@Test ( priority=1, dataProvider = "AssignEditDeleteRoleAccessibilityTest")
public void assignRoleAccessTest(String roleName) {
newUser.createUserAssignRoleAndLogin(roleName);
boolean isAssignRoleOptionAvailable =roleAccessValidation.assignRoleAccess();
assertEquals(isAssignRoleOptionAvailable, false);
}
}
FAILED CONFIGURATION: @BeforeMethod launchBrowserAndLogin org.testng.TestNGException: Can inject only one of
<ITestContext, XmlTest, Method, Object[], ITestResult>
into a @BeforeMethod annotated launchBrowserAndLogin.
最佳答案
如果这是我的代码,我会拆分 BaseClass
进入 AdminClass
和 CustomerClass
-- 这既可以解决问题,也有助于更好地组织测试,因为现在您将知道被测场景是否为 Customer
或 Admin
基于测试用例类扩展的类的 View :
public class CustomerClass {
public CustomerClass() {
}
@BeforeMethod
public void launchBrowserAndLogin() {
launchBrowserAndUrl(Constants.CUSTOMER_TEST_URL);
login(Constants.CUSTOMER_USER_NAME, Constants.CUSTOMER_USER_PASSWORD);
}
@AfterMethod
public void tearDown() {
TestDriver.getDriver().quit();
}
}
public class AdminClass{
public AdminClass() {
}
@BeforeMethod
public void launchBrowserAndLogin() {
launchBrowserAndUrl(Constants.ADMIN_URL);
login(Constants.ADMIN_USER_NAME, Constants.ADMIN_USER_PASSWORD);
}
@AfterMethod
public void tearDown() {
TestDriver.getDriver().quit();
}
}
public class AssignEditDeleteRoleAccessibilityTest extends CustomerClass{ // or AdminClass
CreateUser newUser = new CreateUser();
RoleAssignmentAccessValidation roleAccessValidation = new RoleAssignmentAccessValidation();
@DataProvider(name = "AssignEditDeleteRoleAccessibilityTest")
public static Object[] roleNames() {
return new Object[] {Constants.AGENCY_ASSISTANT_ROLE_NAME, Constants.OPS_MANAGER_ROLE_NAME};
}
@Test ( priority=1, dataProvider = "AssignEditDeleteRoleAccessibilityTest")
public void assignRoleAccessTest(String roleName) {
newUser.createUserAssignRoleAndLogin(roleName);
boolean isAssignRoleOptionAvailable =roleAccessValidation.assignRoleAccess();
assertEquals(isAssignRoleOptionAvailable, false);
}
}
BaseClass
/
AdminClass
/
CustomerClass
各自代表的内容)可以以多种不同的方式实现。我个人认为,在组织和可维护性方面,为每个“开始”场景设置一个固定装置会更好——如果
AdminClass
变得更加复杂,此代码将从
CustomerClass
中排除。 .
BaseClass
,但删除
@BeforeMethod
和
launchBrowserAndLogin()
方法。然后,你可以写
CustomerClass
和
AdminClass
延长
BaseClass
(以便
@AfterMethod
被继承)。然后,
CustomerClass
和
AdminClass()
可以实现自己的版本
launchBrowserAndLogin()
,并且测试用例类看起来仍与此示例相同。
关于java - 如何扩展具有参数化@BeforeMethod 的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59074219/
我要延期基类 来自所有测试用例类。 对于某些测试用例,我想使用管理员凭据登录,而对于某些测试用例,我想使用客户登录。 以前此代码运行正常,因为 launchBrowserAndLogin() 方法没有
我的@BeforeMethod 生成输出。 @BeforeMethod public void Random() throws Exception { //Generating Random
我有两个不同的测试类: public class Class A{ @BeforeMethod public void beforeEachMethod(){ //} @Test(groups = "
我想对来自不同类的测试使用相同的@BeforeMethod 实例,但它不会工作 package com.code.theCode public class theConfiguration{
我想知道 @BeforeMethod 对组的用法。在 http://testng.org/javadoc/org/testng/annotations/BeforeMethod.html它说: alw
@BeforeMethod (groups={"a"}) public void setup1() { //do something } @BeforeMethod (groups={"b"}
我正在使用带有 TestNG 的 Spring Test 来测试我们的 DAO,我想在某些方法之前运行一个特定的文本夹具脚本,允许在每个方法之后回滚修改,以便测试可以自由地做任何事情夹具数据。 最初我
我正在下面编写 Spring 单元测试代码。单元测试 @Before 方法没有被执行。由于它直接运行@PostConstruct,我收到错误 Caused by: java.lang.IllegalA
在带有testng注解的测试类中首先调用什么方法: annotated with @DataProvider annotated with @BeforeMethod ? 在我的测试过程中,我发现了顺
我的所有测试都有一个基类,它定义了 @BeforeMethod 适合大多数测试(我正在测试管理 UI,所以我通常想在测试前以管理员身份登录并登录在它之后出来) - 但有时我想跳过这个方法或者用扩展我的
我的问题和this SOF question基本一样,但处理 @BeforeMethod 而不是 TestNG 的 @BeforeClass。 在确定 @BeforeMethod 注释方法的执行顺序时
我正在使用 TestNG 进行单元测试。我正在使用 @BeforeMethod 来保存记录,然后执行更新、搜索、删除测试。 我正在寻找可以避免对某些测试用例执行 @BeforeMethod 方法调用的
有没有办法在@Test上依赖@BeforeMethod,因为在我的场景中,不同的TestMethod有不同的设置,我需要一个依赖于TestMethod的设置。我在这里添加一些代码片段以便更好地理解 @
我的测试有一个基础测试类,它在每次测试前进行初始化工作。 这是代码 public class BaseTestParameters { MyObj myObj; @DataProvider(n
我正在使用 TestNG 并且有一套测试。我想在每个需要有关该方法的信息的测试方法之前执行一个操作。作为一个简单的例子,假设我想在执行之前打印方法的名称。我可以编写一个用 @BeforeMethod
我需要在每个测试用例之前执行一些关键字。假设我有一个 .robot 文件,其中有 4 个测试用例,并且在执行这 4 个测试用例之前我需要运行关键字 4 次。在TestNG中,我们可以使用@Before
我目前正在使用 TestNG 框架并面临以下问题 - 我已经声明了一个在类中的每个测试之前运行的方法,方法是声明一个类似的方法 @BeforeMethod @Parameters({"type"})
我正在一台机器上运行 ThreadLocal 测试。我使用 @BeforeMethod 中的代码来启动网页。我还尝试过将其单独编写为我的 Base Test 类中的方法,并在 @BeforeMetho
我正在 testNG 中编写测试。每个测试方法共享一些存储在类级别的公共(public)属性,但每个测试方法都需要自己独立的驱动程序,因此驱动程序不能存储为类变量。这允许在并发运行时使用不同的驱动程序
我正在尝试使用一个组来运行与我正在从事的工作相关的测试子集,称为“当前”。问题是,如果我使用父类(super class)在 @BeforeMethod 中进行一些设置,则该方法会在我运行所有测试时运
我是一名优秀的程序员,十分优秀!