TestNG parameter testing example

Yet another TestNG parameter testing example, with @DataProvider.

1. CharUtil Class

Let’s say, a class to convert a character to ASCII or vice verse, how can you unit test it with 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 Example

To test it, create a @Test method which accept two parameters (character and expected ASCII), and the test data is passing from data provider.

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); 
 
	}
}

Result

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
===============================================
More Parameter Examples.
For more examples, please refer to this TestNG parameter test with XML and DataProvider.
Tags :

About the Author

mkyong
Founder of Mkyong.com and HostingCompass.com, love Java and open source stuff. Follow him on Twitter, or befriend him on Facebook or Google Plus. If you like my tutorials, consider make a donation to these charities.

Comments

  • Pingback: water ionizer()

  • Pingback: car parking()

  • Pingback: alkaline water machine()

  • Pingback: laan nu og her()

  • Pingback: laan nu()

  • Pingback: xnxx()

  • Pingback: stop parking()

  • Pingback: Business DIRECTV()

  • Pingback: tvpackages.net()

  • Pingback: Blue Coaster33()

  • Vishwa

    Hi MKYONG,

    It is a great learning.
    sometimes these examples work like a boost for us.
    just solved a problem using your examples in a very quick.

    Thanks,
    Vishwa

  • Sourabh Jain

    I think the ValidDataProvider function should look like this. (No name attribute in @DataProvider annotation)

    @DataProvider(name="ValidDataProvider")
    	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 },
     
    		};
    	}
  • Pingback: TestNG Tutorial()

  • pradeek

    Hi i have some doubts on testng suite running which i am doing keyword driven test using spread sheet,i am using complete modularity in my programs so i created my each test in a class so i can call to my main class,but the problem is each class has dependencies with other class,so how i can call these tests in to my main class for running as suite.

    Thanks
    Pradeek
    http://programnerds.blogspot.com

  • batii

    It’s a nice example.
    I found another at http://shyarmal.blogspot.com/2011/07/testng-dataprovider.html.

  • pan

    Nice one