无法用[class java.lang.String]注入@test注释方法[launchB].
For more information on native dependency injection please refer to http://testng.org/doc/documentation-main.html#native-dependency-injection
at org.testng.internal.Parameters.checkParameterTypes(Parameters.java:244)
at org.testng.internal.Parameters.createParameters(Parameters.java:172)
at org.testng.internal.Parameters.createParameters(Parameters.java:458)
at org.testng.internal.Parameters.handleParameters(Parameters.java:569)
at org.testng.internal.Invoker.handleParameters(Invoker.java:1308)
at org.testng.internal.Invoker.createParameters(Invoker.java:1036)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1126)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
at org.testng.TestRunner.privateRun(TestRunner.java:744)
at org.testng.TestRunner.run(TestRunner.java:602)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:380)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:375)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:340)
at org.testng.SuiteRunner.run(SuiteRunner.java:289)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1301)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1226)
at org.testng.TestNG.runSuites(TestNG.java:1144)
at org.testng.TestNG.run(TestNG.java:1115)
at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:132)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:230)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:76)
下面是代码:
public class LaunchBrowser_2 {
WebDriver driver;
String browser = "IE";
@Test
public void launchB(String browser){
System.setProperty("webdriver.gecko.driver", "D:\\geckodriver\\geckodriver.exe");
System.setProperty("webdriver.chrome.driver", "D:\\Chromedriver\\chromedriver.exe");
System.setProperty("webdriver.ie.driver", "D:\\IEDriver\\IEDriverServer.exe");
if(browser.equals("Mozilla"))
driver = new FirefoxDriver();
else if (browser.equals("Chrome"))
driver = new ChromeDriver();
else if (browser.equals("IE")){
DesiredCapabilities cap = DesiredCapabilities.internetExplorer();
cap.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true);
driver = new InternetExplorerDriver(cap);
}
driver.manage().window().maximize();
//driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.get("http://www.rediff.com");
}
当您定义launchB()
方法时,您接受了一个参数String Browser
。您只是不能从使用@test
注释launchB()
方法的同一个类提供字符串浏览器
。
解决方案是接受testng.xml
中的参数String Browser
。所以你必须做一些修改。删除/注释行字符串browser=“IE”;
。将@parameters(“browser”)
添加到@test
注释的上方。接下来,将System.SetProperty
行移动到相应的if()
块中。最后,为了方便起见,将browser.equals()
替换为browser.equalsignorecase
。最后的代码块将如下所示:
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
public class Q45523264_inject
{
WebDriver driver;
@Parameters("browser")
@Test
public void launchB(String browser)
{
if(browser.equalsIgnoreCase("Mozilla"))
{
System.setProperty("webdriver.gecko.driver", "C:\\Utility\\BrowserDrivers\\geckodriver.exe");
driver = new FirefoxDriver();
}
else if (browser.equalsIgnoreCase("Chrome"))
{
System.setProperty("webdriver.chrome.driver", "C:\\Utility\\BrowserDrivers\\chromedriver.exe");
driver = new ChromeDriver();
}
else if (browser.equalsIgnoreCase("IE"))
{
System.setProperty("webdriver.ie.driver", "C:\\Utility\\BrowserDrivers\\IEDriverServer.exe");
DesiredCapabilities cap = DesiredCapabilities.internetExplorer();
cap.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true);
driver = new InternetExplorerDriver(cap);
}
driver.get("http://www.rediff.com/");
}
}
现在,您必须通过convert to testNG
转换您的程序。生成了testng.xml
。接下来,您将从testng.xml
中传递String Browser
的参数。您必须从testng.xml
中传递
或
(现在开始)或
(现在开始)的参数。您的testng.xml
将如下所示:
<suite name="Suite">
<test name="My Test">
<parameter name="browser" value="Mozilla"/>
<!-- <parameter name="browser" value="IE"/> -->
<!-- <parameter name="browser" value="Chrome"/> -->
<classes>
<class name="demo.Q45523264_inject"/>
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->
我正在为每个测试方法构建一个模块,该模块在测试方法开始执行之前侦听TestNG测试并执行某些操作。我只想知道测试(方法)何时开始执行,方法的名称和测试类的可选名称。 我成功地为testNG的调用程序调用编写了切入点。它成功了。 相反,我想知道的是,每个测试方法都用org注释。测试NG。注释。Test,我如何编写切入点来捕捉用org注释的每个测试方法的执行连接点。测试NG。注释。测试? 这是我的测试
我已经在我的项目中实现了Hilt依赖项,但是当我需要构造函数的@inject注释时,它就不起作用了。基本上,当我试图手动导入它时,我发现javax中的inject文件夹是空的。因此该结构类似于javax.inject。之后,我什么也得不到,因为inject文件夹是空的。我试过重建和清洁他的项目。我也尝试过使缓存无效,但似乎没有任何效果。我怎么才能让这起作用? 依赖项列表 刀柄版本-2.37
对于用@X注释的类中的方法或用@X注释的方法,我需要一个切入点。我还需要注释对象。如果类和方法都被注释,我更喜欢将方法注释作为参数。 我尝试了以下操作,这会产生“绑定不一致”的警告。(为什么不直接将其设置为null?) 以下内容创建了“穿过切入点中的“||”的参数x的不明确绑定”警告。(在我看来,这不一定有意义:为什么不绑定第一个短路评估?) 如果存在类和方法注释,则将前面的尝试拆分为两个,自然会
我有一个Spring启动应用程序,我最近从v1.3.3. RELEASE升级到v1.4.2. RELEASE。 用于我在v1中的集成测试。3.3,我有一个豆子,我能够成功地监视它。我在运行测试时,配置文件,下面的被激活,而不是应用程序的。 我正在升级到v1。4.2.发布并希望使用spyBean注释模拟单个方法,而不依赖于概要文件。 我对我的测试方法做了以下改变,以尝试它- 然而,当我尝试上述方法时
问题内容: 我的测试课: 我在行上得到一个空指针异常: 在精确的给出空指针异常 如何使Junit类中的beanObject字段自动装配成为可能,以便可以使用“ BeanClass”类中的方法? 从评论中复制: 用简单的术语来说.. beanClass是具有某些方法的接口..我用 注释标记了该beanClass。.banClass 是由具有方法实现的beanClassImpl类实现的。.我需要在我的
我找到了一些答案:https://stackoverflow.com/a/21218921/2754014 关于依赖注入。没有任何注释,如,或。让我们假设此示例没有任何 XML 配置 的 bean (除了简单