testng.xml не запускает несколько классов из разных пакетов - PullRequest
0 голосов
/ 02 ноября 2018

Вот мои фрагменты кода:
BrowserFactory.java в пакете A

public class Browserfactory {
    public static void startBrowser(){
        System.setProperty("webdriver.gecko.driver", strFirefoxDriverPath);
        driver = new FirefoxDriver();
        driver.get(someSampleURL);
    }

    @BeforeTest()
    public void setDriver() {       
        Reports.configAndPrepareReport();
    }

    @AfterTest
    public void tearDownDriver() {
        driver.quit();
        Reports.writeToHTML();
    }

    @BeforeSuite
    public void startSuite() {
        BrowserFactory.startBrowser();
    }

    @AfterSuite
    public void endSuite() {
        Reports.closeTheChannelToHTMLReport();
    }
}

VerifyCheckboxesPage.java в пакете B

public class VerifyCheckboxesPage extends BrowserFactory{
    CheckboxesPage objCheckboxesPage;

    @BeforeClass
    public void beforeClass() {
        new MainPage(BrowserFactory.driver).goToCheckboxesPage();
        objCheckboxesPage = new CheckboxesPage(BrowserFactory.driver);
    }

    @Test(priority = 1)
    public void verifyCheckboxesPageHeader() {
        if(objCheckboxesPage.txtHeader.getText().equals("Checkboxes")) {
            Reports.logStatus(LogStatus.PASS);
        }
        else {
            Reports.logStatus(LogStatus.FAIL);
        }
    }

    @Test(priority = 2)
    public void verifyCountOfCheckboxes() {
        if(objCheckboxesPage.chkCheckboxes.size() == 2) {
            Reports.logStatus(LogStatus.PASS);
        }
        else {
            Reports.logStatus(LogStatus.FAIL);
        }
    }
}

CheckboxesPage.java в пакете C

public class CheckboxesPage{
    WebDriver driver;

    @FindBy(someMethodToFindObjectsOnPage)
    public WebElement txtHeader;

    @FindAll({@FindBy(someMethodToFindObjects)})
    public List<WebElement> chkCheckboxes;

    public CheckboxesPage(WebDriver driver) {   
        this.driver = driver;
        PageFactory.initElements(driver, this);
    }
}

VerifyABTestingPage.java в пакете B

public class VerifyABTestingPage extends BrowserFactory{
    ABTestingPage objABTestingPage;

    @BeforeClass
    public void beforeClass() {
        Reports.startTest("Verify A/B Testing page");
        new MainPage(BrowserFactory.driver).goToABTestingPage();
        objABTestingPage = new ABTestingPage(BrowserFactory.driver);
    }

    @Test(priority = 1)
    public void verifyABTestingPageHeader() {
        if(objABTestingPage.txtHeader.getText().equals("A/B Test Control")){
            Reports.logStatus(LogStatus.PASS);
        }
        else {
            Reports.logStatus(LogStatus.FAIL);
        }
    }

    @Test(priority = 2)
    public void verifyABTestingPageBody() {
        if(objABTestingPage.txtBody.getText().contains(strExpectedBody)) {
            Reports.logStatus(LogStatus.PASS);
        }
        else {
            Reports.logStatus(LogStatus.FAIL);
        }
    }
}

ABTestingPage.java в пакете C

public class ABTestingPage {
    WebDriver driver;

    @FindBy(someMethodToLocateObject)
    public WebElement txtHeader;

    @FindBy(someMethodToLocateObject)
    public WebElement txtBody;

    public ABTestingPage(WebDriver driver) {    
        this.driver = driver;
        PageFactory.initElements(this.driver, this);
    }
}

MainPage.java в пакете C

public class MainPage {
    @FindBy(someMethodToLocateObject)
    public WebElement lnkABTesting;

    @FindBy(someMethodToLocateObject)
    public WebElement lnkCheckboxes;

    WebDriver driver;

    public MainPage(WebDriver driver) {
        this.driver = driver;
        PageFactory.initElements(this.driver, this);
    }

    public void goToABTestingPage() {   
        new WebDriverWait(driver,10).until(ExpectedConditions.elementToBeClickable(lnkABTesting)).click();
    }

    public void goToCheckboxesPage() {
        new WebDriverWait(driver, 10).until(ExpectedConditions.elementToBeClickable(lnkCheckboxes)).click();
    }
}

Наконец, вот как выглядит мой testng.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite">
  <test thread-count="5" name="Test">
    <classes>
      <class name="com.herokuapp.internet.tests.VerifyCheckboxesPage"/>
      <class name="com.herokuapp.internet.tests.VerifyABTestingPage"/>
    </classes>
  </test>
</suite>

Постановка задачи: когда я запускаю свои тестовые примеры из testng.xml, щелкнув правой кнопкой мыши по файлу xml и выбрав Run As> TestNGSuite, он запускает просто VerifyCheckboxesPage (первое имя класса в testng xml) и это тоже только 1-й тестовый пример этого класса. Не знаю почему.

1 Ответ

0 голосов
/ 02 ноября 2018

Попробуйте переконфигурировать testNG.xml и аннотировать ваши тесты

    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name="Functional Smoke Jenkins suite" parallel="false" thread-count="5" verbose="8">

<test name="test name FIRST">
    <parameter name="env" value="DEFAULT"/>
    <groups>
        <run>                
            <include name="smoke"/>
        </run>
    </groups>
    <classes>
        <class name="com.herokuapp.internet.tests.VerifyCheckboxesPage"/>
    </classes>
</test>
<test name="test name SECOND">
    <parameter name="env" value="DEFAULT"/>
    <groups>
        <run>                
            <include name="smoke"/>
        </run>
    </groups>
    <classes>
        <class name="com.herokuapp.internet.tests.VerifyABTestingPage"/>
    </classes>
</test>

И, пожалуйста, комментируйте тесты с соответствующими названиями групп:

  @Test(priority = 1,groups = {"smoke})
    public void verifyABTestingPageHeader() {
        if(objABTestingPage.txtHeader.getText().equals("A/B Test Control")){
            Reports.logStatus(LogStatus.PASS);
        }
        else {
            Reports.logStatus(LogStatus.FAIL);
        }
    }

Надеюсь, это поможет, по крайней мере, на этапе отладки. Дайте мне знать, какие результаты Вы получите.

P.s Пожалуйста, попробуйте точно выполнить ваши настройки, шаг за шагом, начиная с официального testNg doc здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...