简体   繁体   English

无法在TestNG中调用公共方法

[英]Can't invoke public method in TestNG

I have following constructor in a public class: 我在公共课程中有以下构造函数:

public LoginPage(Browser browser, Logger logger) throws GeneralLeanFtException {
    super(browser, logger);
}

browser and logger variables are defined in BasePage class, which is extended by this class. browserlogger变量在BasePage类中定义,该类对此类进行了扩展。

public class BasePage {
    protected Browser browser;
    protected Logger logger;

    public BasePage(Browser browser,Logger logger) throws GeneralLeanFtException {
        this.browser = browser;
        this.logger = logger;
    }
}

I get following error message when execute it with TestNG . 使用TestNG执行该错误消息时,出现以下错误消息。

either make it static or add a no-args constructor to your class 将其设为静态或向类添加无参数构造函数

Error stack: 错误堆栈:

throws com.hp.lft.sdk.GeneralLeanFtException,java.lang.InterruptedException: either make it static or add a no-args constructor to your class at org.testng.internal.Utils.checkInstanceOrStatic(Utils.java:795) at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:40) at org.testng.internal.Invoker.invokeMethod(Invoker.java:714) at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901) at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231) at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127) at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111) at org.testng.TestRunner.privateRun(TestRunner.java:767) at org.testng.TestRunner.run(TestRunner.java:617) at 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.tes 抛出com.hp.lft.sdk.GeneralLeanFtException,java.lang.InterruptedException:将其设为静态,或在org.testng.internal.Utils.checkInstanceOrStatic(Utils.java:795)处的类中添加无参数构造函数org.testng.internal.Invoker.invokeMethod(Invoker.java:714)位于org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)具有.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:40) org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127)上的org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)在org.testng的org.testng.SuiteRunner.runTest(SuiteRunner.java:348)的org.testng.TestRunner.run(TestRunner.java:617)的org.testng.TestRunner.privateRun(TestRunner.java:767)处。 org.testng.SuiteRunner.privateRun(SuiteRunner.java:305)的org.testng.SuiteRunner.run(SuiteRunner.java:254)的SuiteRunner.runSequentially(SuiteRunner.java:343) tng.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) at org.testng.TestNG.run(TestNG.java:1057) 在org.testng上的tng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)在org.testng.TestNG.runSuitesSequentially(TestNG.java:1224)处的org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)在org.testng.TestNG.runSuitesLocally (TestNG.java:1149),位于org.testng.TestNG.run(TestNG.java:1057)

Class from test is executed: 测试中的类被执行:

@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 variable can be seen by this class, classes in the same package and classes which extend that class. 此类,同一包中的类和扩展该类的类可以看到Protected变量。

static variable exists at class level, it does not exist separately for each instance and it does not have an independent existence in classes which extend class. 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;
        }
    }

try like this by making protected variables as protected static 通过将protected变量设置为protected static尝试这样

Not sure but looking exception message, and source code it seems you need to have no argument constructor in your class. 不确定但正在查看异常消息和源代码 ,看来您的类中不需要参数构造函数。

Can you add no argument constructor in your BasePage and LoginPage class and check? 您能否在BasePageLoginPage类中不添加任何参数构造函数并进行检查?

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM