testngtestngを使い始める


備考

このセクションでは、testngの概要と、開発者がそれを使いたい理由について概説します。

また、testng内の大きなテーマについても言及し、関連するトピックにリンクする必要があります。 testngのドキュメンテーションは新しいものなので、それらの関連トピックの初期バージョンを作成する必要があります。

バージョン

バージョン日付
1.0 2017-06-07

EclipseでTestNGを設定する方法とxmlを使ってテストを実行する方法

TestNGをEclipseにインストールする方法

  1. 開いた日食
  2. [ヘルプ]> [新しいソフトウェアをインストールする]をクリックします。 リストアイテム
  1. 追加をクリックします
  2. 名前とURLを入力してください - http://beast.com/eclipse ここに画像の説明を入力
  1. TestNGを選択
  2. 次へをクリックします

リストアイテム

  1. Finishをクリックします。
  2. TestNGをインストールするには時間がかかります

一度インストールしてからEclipseを再起動してください。

TestNGプロジェクトを作成できます

  1. ファイル>新規> Javaプロジェクト>名前を入力して終了をクリック

  2. TestNGClassとしてクラスを作成する

  3. 次のクラスを作成する

    1.LoginPage.class

    2.HomePage.class

    3.FBLoginTest.class

コードは次のようになります。

LoginPageクラス

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.PageFactory;

public class LoginPage {

    @FindBy(id = "email")
    private WebElement username;
    
    @FindBy(id = "pass")
    private WebElement password;
    
    @FindBy(xpath = ".//input[@data-testid='royal_login_button']")
    private WebElement login;
    
    WebDriver driver;
    
    public LoginPage(WebDriver driver){
        this.driver = driver;
         PageFactory.initElements(driver, this);
    }
    public void enterUserName(String name){
        username.clear();
        username.sendKeys(name);
    }
    
    public void enterPassword(String passwrd){
        password.clear();
        password.sendKeys(passwrd);
    }
    

    public HomePage clickLoginButton(){
        login.click();
        return new HomePage(driver);
    }
}
 

HomePageクラス

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.PageFactory;

public class HomePage {

    @FindBy(id = "userNavigationLabel")
    private WebElement userDropdown;
    
    WebDriver driver;
    
    public HomePage(WebDriver driver){
        this.driver = driver;
        PageFactory.initElements(driver, this);
    } 
    
    public boolean isUserLoggedIn(){
        return userDropdown.isDisplayed();
    }
    
}
 

FBLoginTestクラス

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.Test;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.AfterClass;

import com.testng.pages.HomePage;
import com.testng.pages.LoginPage;

public class FBLoginTest {
    
    WebDriver driver;
    LoginPage loginPage;
    HomePage homePage;
    
    @BeforeClass
    public void openFBPage(){
        driver = new FirefoxDriver();
        driver.get("https://www.facebook.com/");
        loginPage = new LoginPage(driver);
    }
    
    @Test
    public void loginToFB(){
        loginPage.enterUserName("");
        loginPage.enterPassword("");
        homePage = loginPage.clickLoginButton();
        Assert.assertTrue(homePage.isUserLoggedIn());
    }
    
    @AfterClass
    public void closeBrowser(){
        driver.quit();
    }

}
 

ここではtestng xmlがあります:プロジェクトを右クリックしてxmlファイルを作成し、この内容をコピーして貼り付けます。

<?xml version="1.0" encoding="UTF-8"?>
<suite name="Suite">
  <test name="Test">
    <classes>
      <class name="com.testng.FBLoginTest"/>
    </classes>
  </test> <!-- Test -->
</suite> <!-- Suite -->
 

セレンスタンドアロンジャーを追加する方法:
最新のselenium standalone jarをダウンロードし、プロジェクトのビルドパスに追加します。

  1. [プロジェクト]> [ビルドパス]> [ビルドパスの設定]> [ライブラリの選択]> [外部Jarsの追加]を右クリックします。

TestNG xmlを実行するには? xml> Run As> TestNGSuiteを右クリックします。

ハッピーコーディング:)

インストールまたはセットアップ

TestNGは、JDK 7以上を使用する必要があります。

http://testng.org/doc/download.htmlによると、testngをインストールするには、あなたのmaven pom.xmlまたはgradle build.gradleファイルにtestng依存関係を追加する必要があります

Maven:

<repositories>
  <repository>
    <id>jcenter</id>
    <name>bintray</name>
    <url>http://jcenter.bintray.com</url>
  </repository>
</repositories>
 
<dependency>
  <groupId>org.testng</groupId>
  <artifactId>testng</artifactId>
  <version>6.9.12</version>
  <scope>test</scope>
</dependency>
 

Gradle:

repositories {
    jcenter()
}
 
dependencies {
    testCompile 'org.testng:testng:6.9.12'
}
 

より多くのオプションは公式ページで見つけることができます

TestNGを使ったクイックプログラム

package example;
 
import org.testng.annotations.*; // using TestNG annotations
 
public class Test {
 
 @BeforeClass
 public void setUp() {
   // code that will be invoked when this test is instantiated
 }
 
 @Test(groups = { "fast" })
 public void aFastTest() {
   System.out.println("Fast test");
 }
 
 @Test(groups = { "slow" })
 public void aSlowTest() {
    System.out.println("Slow test");
 }
 
}
 

メソッドsetUp() は、テストクラスがビルドされ、テストメソッドが実行される前に呼び出されます。この例では、グループを高速で実行するので、 aFastTest() はスキップされますが、 aSlowTest() が呼び出されます。

GradleでTestNGスイートを実行する

サンプルbuild.gradle ファイル:

plugin: 'java'

repositories {
    mavenLocal()
    mavenCentral()
    jcenter()
}

dependencies {
    compile "org.testng:testng:6.9.12"
}

test {
    useTestNG() {
    suiteXmlBuilder().suite(name: 'Sample Suite') {
        test(name : 'Sample Test') {
            classes('') {
                'class'(name: 'your.sample.TestClass')
            }
        }
    }
}
 

TestNG Hello Worldの例

シンプルなTestNG プログラムの作成と実行は、主に3ステップのプロセスです。

  1. コード - テストのビジネスロジックを記述し、 TestNG注釈で注釈を付ける
  2. 設定 - testng.xml またはbuild.xml テストの情報を追加する
  3. TestNGを実行する - コマンドライン、ANT、EclipseのようなIDE、IntelliJのIDEAから呼び出すことができる)

例の簡単な説明(テストする必要があるもの)

私たちは、4桁のPINを生成しint として返すメソッドgenerateFourDigitPin を持つRandomNumberGenerator クラスを持っています。ここでは、その乱数が4桁の数字かどうかをテストしたいと思います。以下はコードです:

テストするクラス

package example.helloworld;

public class RandomNumberGenerator {

public int generateFourDigitPin(){
    return (int)(Math.random() * 10000);
}
}
 

TestNGテストクラス

package example.helloworld;

import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

public class TestRandomNumberGenerator {
    
    RandomNumberGenerator rng = null;
    
    @BeforeClass
    public void deSetup(){
        rng = new RandomNumberGenerator();
    }
    
    @Test
    public void testGenerateFourDigitPin(){
        int randomNumber = rng.generateFourDigitPin();
        Assert.assertEquals(4, String.valueOf(randomNumber).length());
    }
    
    @AfterClass
    public void doCleanup(){
        //cleanup stuff goes here
    }
}
 

Ther testng.xml

<suite name="Hello World">
    <test name="Random Number Generator Test">
        <classes>
            <class name="example.helloworld.TestRandomNumberGenerator" />
        </classes>
    </test>
</suite>