java - 无法在 TestNG 中调用公共方法
问题描述
我在公共类中有以下构造函数:
public LoginPage(Browser browser, Logger logger) throws GeneralLeanFtException {
super(browser, logger);
}
browser
logger
变量在类中定义,由BasePage
该类扩展。
public class BasePage {
protected Browser browser;
protected Logger logger;
public BasePage(Browser browser,Logger logger) throws GeneralLeanFtException {
this.browser = browser;
this.logger = logger;
}
}
使用TestNG
.
要么让它成为静态的,要么给你的类添加一个无参数的构造函数
错误堆栈:
抛出 com.hp.lft.sdk.GeneralLeanFtException,java.lang.InterruptedException:要么使其成为静态,要么在 org.testng.internal.Utils.checkInstanceOrStatic(Utils.java:795) 的类中添加一个无参数构造函数.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:40) 在 org.testng.internal.Invoker.invokeMethod(Invoker.java:714) 在 org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901) 在org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231) 在 org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127) 在 org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)在 org.testng.TestRunner.privateRun(TestRunner.java:767) 在 org.testng.TestRunner.run(TestRunner.java:617) 在 org.testng.SuiteRunner.runTest(SuiteRunner.java:348) at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:343) at org.testng.SuiteRunner.privateRun(SuiteRunner.java:305) at org.testng.SuiteRunner.run(SuiteRunner.java:254) at org. testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86) at org.testng.TestNG.runSuitesSequentially(TestNG.java:1224) at org.testng.TestNG.runSuitesLocally (TestNG.java:1149) 在 org.testng.TestNG.run(TestNG.java:1057)runSuitesSequentially(TestNG.java:1224) at org.testng.TestNG.runSuitesLocally(TestNG.java:1149) at org.testng.TestNG.run(TestNG.java:1057)runSuitesSequentially(TestNG.java:1224) at org.testng.TestNG.runSuitesLocally(TestNG.java:1149) at org.testng.TestNG.run(TestNG.java:1057)
执行来自测试的类:
@Test
public class LeanFTest {
public static void main(String[] args) throws IOException, SAXException, ParserConfigurationException {
TestNG testNG = new TestNG();
testNG.setTestSuites(Arrays.asList("testng.xml"));
testNG.setPreserveOrder(true);
testNG.run();
}
}
解决方案
Protected
这个类、同一个包中的类和扩展该类的类都可以看到变量。
static
变量存在于类级别,它不针对每个实例单独存在,并且在扩展类的类中不独立存在。
public class BasePage {
protected static Browser browser;
protected static Logger logger;
public BasePage(Browser browser,Logger logger) throws GeneralLeanFtException {
this.browser = browser;
this.logger = logger;
}
}
通过将protected
变量设为protected static
推荐阅读
- java - Mybatis executed the
tag incorrectly, - facebook - 从 Facebook 拉取内容的应用程序控制请求是什么?
- docker - 如何 docker-compose 引用现有图像的图像并添加以参数命名的文件
- spring-boot - Spring boot 中 AWS S3 Camel XML DSL 路由的 JUnit 测试
- vue.js - 未定义 beforeEach localStorage 中的 Vue 2 路由器
- python - 如何在 Python 配置文件中使用前缀路径?
- javascript - 将类组件中的 prevstates 转换为功能组件?
- javascript - 当我的播放声音在 HTML 和 JAVASCRIPT 中完成时,我想调用一个函数
- javascript - 在 Google Script for Google Sheets 中循环扫描仪输入数据
- c++ - 在临时字符串上使用基于范围的循环时为空字符?