開発者ドキュメント

TestNGパラメータのテストの例

さらに別のTestNGパラメータのテスト例では、 `@ DataProvider`を使用しています。

1. CharUtilクラス

たとえば、文字をASCIIまたはその逆に変換するクラスを、TestNGで単体テストできるかどうかを考えてみましょう。

CharUtils.java

package com.mkyong.testng.examples.parameter;
/** **
 **  Character Utility class
 **
 **  @author mkyong
 **
 ** /public class CharUtils {
   /** **
     **  Convert the characters to ASCII value
     **
     **  @param character character
     **  @return ASCII value
     ** /    public static int CharToASCII(final char character) {
        return (int) character;
    }

   /** **
     **  Convert the ASCII value to character
     **
     **  @param ascii ascii value
     **  @return character value
     ** /    public static char ASCIIToChar(final int ascii) {
        return (char) ascii;
    }
}

2. TestNG @DataProviderの例

これをテストするには、2つのパラメータ(文字と期待ASCII)を受け入れ、テストデータがデータプロバイダから渡される `@ Test`メソッドを作成します。

CharUtilsTest.java

package com.mkyong.testng.examples.parameter;

import org.testng.Assert;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;/** **
 **  Character Utils Testing
 **  @author mkyong
 **
 ** /public class CharUtilsTest {

    @DataProvider
    public Object[][]ValidDataProvider() {
        return new Object[][]{
            { 'A', 65 },{ 'a', 97 },
            { 'B', 66 },{ 'b', 98 },
            { 'C', 67 },{ 'c', 99 },
            { 'D', 68 },{ 'd', 100 },
            { 'Z', 90 },{ 'z', 122 },
            { '1', 49 },{ '9', 57 }
        };
    }

    @Test(dataProvider = "ValidDataProvider")
    public void CharToASCIITest(final char character, final int ascii) {

           int result = CharUtils.CharToASCII(character);
           Assert.assertEquals(result, ascii);

    }

    @Test(dataProvider = "ValidDataProvider")
    public void ASCIIToCharTest(final char character, final int ascii) {

           char result = CharUtils.ASCIIToChar(ascii);
           Assert.assertEquals(result, character);

    }
}

結果

PASSED: CharToASCIITest(A, 65)
PASSED: CharToASCIITest(a, 97)
PASSED: CharToASCIITest(B, 66)
PASSED: CharToASCIITest(b, 98)
PASSED: CharToASCIITest(C, 67)
PASSED: CharToASCIITest(c, 99)
PASSED: CharToASCIITest(D, 68)
PASSED: CharToASCIITest(d, 100)
PASSED: CharToASCIITest(Z, 90)
PASSED: CharToASCIITest(z, 122)
PASSED: CharToASCIITest(1, 49)
PASSED: CharToASCIITest(9, 57)
PASSED: ASCIIToCharTest(A, 65)
PASSED: ASCIIToCharTest(a, 97)
PASSED: ASCIIToCharTest(B, 66)
PASSED: ASCIIToCharTest(b, 98)
PASSED: ASCIIToCharTest(C, 67)
PASSED: ASCIIToCharTest(c, 99)
PASSED: ASCIIToCharTest(D, 68)
PASSED: ASCIIToCharTest(d, 100)
PASSED: ASCIIToCharTest(Z, 90)
PASSED: ASCIIToCharTest(z, 122)
PASSED: ASCIIToCharTest(1, 49)
PASSED: ASCIIToCharTest(9, 57)

===============================================
    com.mkyong.common.CharUtilsTest
    Tests run: 24, Failures: 0, Skips: 0
===============================================
モバイルバージョンを終了