package baseClasses;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Parameters;
public final class InitSetUp {
private WebDriver driver;
private static String baseDriverPath="D:\\driver\\";
public WebDriver getDriver() {
return driver;
}
private void setDriver(String browserName, String url) {
switch(browserName) {
case "Chrome" : {
System.out.println("Setting chorme driver please wait");
driver = initChromeDriver(url);
}
case "Firefox" :{
System.out.println("Setting firefox driver please wait");
driver = initFirfoxDriver(url);
}
case "IE" : {
}
}
}
private WebDriver initChromeDriver(String url) {
System.out.println("initializing chorme driver please wait");
System.setProperty("webdriver.chrome.driver", baseDriverPath + "chromedriver.exe");
WebDriver driver = new ChromeDriver();
System.out.println("Navigating to given url please wait");
driver.navigate().to(url);
return driver;
}
private WebDriver initFirfoxDriver(String url) {
System.out.println("initializing Firefox driver please wait");
System.setProperty("webdriver.firefox.driver", baseDriverPath + "geckodriver.exe");
WebDriver driver = new ChromeDriver();
System.out.println("Navigating to given url please wait");
driver.navigate().to(url);
return driver;
}
@Parameters({"browserName","openURL"})
@BeforeClass
public void initBorwser(String browserName,String openURL) {
System.out.println("Initializing Class..");
try {
setDriver(browserName, openURL);
} catch (Exception e) {
System.out.println("Error....." + e.getStackTrace());
}
}
@AfterClass
public void tearDown() {
System.out.println("Quiting please wait");
driver.quit();
}
}
这是另一堂课
package testClasses;
import org.openqa.selenium.WebDriver;
import org.testng.annotations.Test;
import baseClasses.InitSetUp;
public class OpenTest {
private WebDriver driver;
public OpenTest() {
System.out.println("In Open Test");
InitSetUp baseclass= new InitSetUp();
driver = baseclass.getDriver();
}
@Test
public void openBroser() {
System.out.println("TEST ONE");
}
}
和TESTNG XML--------
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
<suite name="TESTX" verbose="1" >
<parameter name="browserName" value="Firefox" />
<parameter name="openURL" value="google.com" />
<test name="TestOpen" >
<classes>
<class name="testClasses.OpenTest" />
<class name="baseClasses.InitSetUp" />
</classes>
</test>
</suite>
当我在testNG中运行上述XML时,它没有执行@BeforeCLass和@AfterClass方法。它将输出显示为-
[RemoteTestNG]在Open Test Test ONE中检测到TestNG版本7.2.0
您的代码有错误。。。要回答您的问题,为什么不调用@beforeclast@afterclass,是因为您没有将InitSetUp类扩展到OpenTest
因此,不要将其更改为公共类初始化设置,而改为公共类初始化设置
并在此处应用继承
将其更改为public class OpenTest Extendes InitSetUp,而不是public class OpenTest
问题内容: 在下面使用这种方法时,通过设置带有套件的jUnit。当每个Testclass中的所有@BeforeClass将在开始执行任何测试之前执行时,我们遇到了问题。(对于每个n个TestClass文件,@BeforeClass运行,然后在它们执行之后,它开始执行第一个MyTest.class文件@Test) 这将导致我们分配大量的资源和内存。我的想法是一定是错误的,每个@BeforeClass
在我的测试中,自动化在两个移动设备上运行测试,并与testNG feamework并行。@BeforeClass和@AfterClass方法位于所有其他测试类继承的基类(超级)中。BeforeClass方法初始化驱动程序会话,AfterClass终止会话。 问题是@AfterClass没有执行。因此,驱动程序会话没有终止,随后对BeforeClass的调用也因此失败。这导致每个类中只执行第一个测试
假设我有testng.xml, 这可能包含更多接近10-15的类,这是我的通用testng.xml,来自不同的testdata,我想要的是跳过com.testclass1类(对于特定情况),其余的test应该执行。 我尝试使用TestNG的IAnnotationTransformer监听器来实现我的类。 代码段是, 并在测试类级别调用此侦听器,如 @Listeners(com.skiptestcl
问题内容: 我有一个抽象基类,用作我的单元测试(TestNG 5.10)的基础。在该类中,我将初始化测试的整个环境,设置数据库映射等。此抽象类具有一个带有注释的方法,该方法可以进行初始化。 接下来,我用具有方法和方法的特定类扩展该类。这些方法对环境进行类特定的初始化(例如,将一些记录放入数据库中)。 如何执行带注释的方法的特定顺序?我需要先执行抽象基类中的那些,然后再执行扩展类中的那些。 例: 预
我对在TestNG中使用注释@beforeClass、afterClass、beforeSuite、afterSuite感到困惑。 接下来,afterSuite、beforeSuite和@test: 我的问题是关于语义,意思,而不是实际的代码。我读了testNG文档--没有帮助。
我试图用硒和cucumber做并行测试。因此,我们有大约130个测试场景,运行时间约为1.5小时。现在通过并行运行所有这些测试,我可以减少时间。 我正在使用以下两个插件: 因此,假设我给出线程计数或分叉计数3,它将调用3个浏览器,并运行测试。使用CUcumber JVM并行插件,我为所有场景创建了131个runner。使用Cucumber的@Before注释,我可以调用浏览器一次,接下来的所有实例