2013-01-02 60 views
3

使用組時@AfterMethod調用所以我有一個具有下面的代碼測試:TestNG中忽略的testng.xml

public class ViewLineList 
{ 

Browser browser = new Browser(); 
WebDriver driver; 


public void viewLineList(String driverName) 
{ 
    driver = browser.getDriver(driverName); 

    //Navigate to System Facing 
    driver.manage().window().maximize(); 
    driver.navigate().to("URL GOES HERE"); 
    driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS); 


    //Verify Line List is present 
    WebElement lineList = driver.findElement(By.xpath("/html/body/div/div/div/div/form/div/div[2]/div/div[2]/div")); 
    Assert.assertNotNull(lineList, "The Line List is empty"); 
    Assert.assertEquals(true, lineList.isDisplayed(), "The line list is not displayed"); 

    //Verify Columns are present 

    WebElement poEligibleColumn = driver.findElement(By.linkText("PO Eligible")); 
    WebElement patientColumn = driver.findElement(By.linkText("Patient/SSN")); 
    WebElement wardColumn = driver.findElement(By.linkText("Ward/Room")); 
    WebElement drugColumn = driver.findElement(By.linkText("Drug")); 
    WebElement dosageColumn = driver.findElement(By.linkText("Dosage")); 
    WebElement startDateColumn = driver.findElement(By.linkText("Start Date")); 
    WebElement nextDoseColumn = driver.findElement(By.linkText("Next Dose")); 
    WebElement lastReviewDateColumn = driver.findElement(By.linkText("Last Review Date")); 
    WebElement reviewerColumn = driver.findElement(By.linkText("Reviewer")); 
    WebElement toolsColumn = driver.findElement(By.linkText("Tools")); 

    Assert.assertEquals(true, poEligibleColumn.isDisplayed(), "The PO Eligible column is not present"); 
    Assert.assertEquals(true, patientColumn.isDisplayed(), "The Patient column is not present"); 
    Assert.assertEquals(true, wardColumn.isDisplayed(), "The Ward column is not present"); 
    Assert.assertEquals(true, drugColumn.isDisplayed(), "The Drug column is not present"); 
    Assert.assertEquals(true, dosageColumn.isDisplayed(), "The Dosage column is not present"); 
    Assert.assertEquals(true, startDateColumn.isDisplayed(), "The Start Date column is not present"); 
    Assert.assertEquals(true, nextDoseColumn.isDisplayed(), "The Next Dose column is not present"); 
    Assert.assertEquals(true, lastReviewDateColumn.isDisplayed(), "The Last Review Date column is not present"); 
    Assert.assertEquals(true, reviewerColumn.isDisplayed(), "The Reviewer column is not present"); 
    Assert.assertEquals(true, toolsColumn.isDisplayed(), "The Tools column is not present"); 

} 

//Tests - Run these 
@Test(groups = {"functionalTests.FF"}) 
public void test_ViewLineList_FF() 
{ 
    viewLineList("firefox"); 
} 

@Test(groups = {"functionalTests.IE"}) 
public void test_ViewLineList_IE() 
{ 
    viewLineList("ie"); 
} 
@AfterMethod 
public void tearDown() 
{ 
    driver.quit(); 
} 
} 

當我從類運行測試上面的@AfterMethod工作正常。當我從我的testng.xml中調用該類時,問題就出現了。以下哪個是:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> 
<suite name="Suite" parallel="none"> 
    <test name="Test" preserve-order="true"> 
    <groups> 
    <run> 
     <include name="functionalTests.FF"/> 
     <exclude name="functionalTests.IE"/> 
     <exclude name="functionalTests.iOS"/>  
    </run> 
    </groups> 
    <classes> 
    <class name="ui_Tests.ViewLineList"/> 
    <!-- <class name="ui_Tests.ViewLineListResolutions"/> 
    <class name="ui_Tests.InteractWithLineList"/> 
    <class name="ui_Tests.POEligibleTests"/> 
    <class name="ui_Tests.DisableColumns"/> 
    <class name="ui_Tests.ExpandCollapseBars"/> 
    <class name="ui_Tests.BarGraphs"/> --> 
    </classes>  
</test> <!-- Test --> 
</suite> <!-- Suite --> 

如果我運行從XML文件中,則@AfterMethod被忽略的測試。我也試過@AfterTest@AfterClass,當測試失敗時它們似乎都被忽略了。

+0

他們應該運行不管什麼..你確定他們沒有執行?你有沒有嘗試添加一些日誌記錄,以確保? –

+0

@PeterLiljenberg那麼'@ AfterMethod'等人應該運行,不管通過/失敗的條件,這意味着Web瀏覽器應該關閉。不是這樣。 – DarthOpto

回答

8

您的@AfterMethod未運行,因爲它不在您運行的組中。 您可以指定組或指示它始終運行。

@AfterMethod(groups = {"functionalTests.FF"}) 

@AfterMethod(alwaysRun = true) 

最有可能要使用alwaysRun = true

+0

非常感謝。這非常棒。 – DarthOpto

相關問題