一 、基本用法
- package test;
- import org.testng.Assert;
- import org.testng.annotations.DataProvider;
- import org.testng.annotations.Test;
- public class BetweenValue {
- //待测试方法
- public boolean isBetween(int n, int lower, int upper){
- if( n >= lower && n <= upper){
- return true;
- }
- else return false;
- }
- //测试方法
- @Test(dataProvider = "range-provider")
- public void testIsBetween(int n, int lower, int upper, boolean expected){
- System.out.println("received n "+ n + "lower " + lower + "upper " + upper + " expected" + expected);
- Assert.assertEquals(expected, isBetween(n,lower,upper));
- }
- //测试方法的数据源
- @DataProvider(name="range-provider")
- public Object[][] rangeData(){
- return new Object[][]{{5,5,10,false}};
- }
- }
二、TestNG在调用数据提供者之前会设置两个参数(Method,ITestcontext),这两个参数为提供了某种上下文,然后再决定做什么
1、Method参数(java.lang.reflect.Method), 如下代码显示数据提供者会根据method的值不同而返回不同的数据
- package test;
- import org.testng.annotations.Test;
- import java.lang.reflect.Method;
- import org.testng.annotations.DataProvider;
- public class DataMethod {
- @DataProvider
- public Object[][] provideNumbers(Method method){
- Object [][] result =null;
- if(method.getName().equals("two")){
- result = new Object[][]{ new Object[]{2}};
- }else if (method.getName().equals("three")){
- result = new Object[][]{ new Object[]{3}};
- }
- return result;
- }
- @Test(dataProvider="provideNumbers")
- public void two(int param){
- System.out.println("Method two received:" + param);
- }
- @Test(dataProvider="provideNumbers")
- public void three(int param){
- System.out.println("Method three received:" + param);
- }
- }
- package test;
- import org.testng.annotations.Test;
- import java.util.Arrays;
- import org.testng.ITestContext;
- import org.testng.annotations.DataProvider;
- public class DataGroup {
- @DataProvider
- public Object[][] provideNumbers(ITestContext context){
- Object [][] result =null;
- String[] groups = context.getIncludedGroups();
- //String testName = context.getName();
- //执行的组中包含groupOne则数据为3
- if(Arrays.asList(groups).contains("groupOne")){
- result = new Object[][]{ new Object[]{2}};
- }else {
- result = new Object[][]{ new Object[]{3}};
- }
- return result;
- /*
- *执行的用例名为"Group Test1"则返回3
- * if(testName.equals("Group Test1")){
- result = new Object[][]{ new Object[]{3}};
- }
- return result;
- }*/
- }
- @Test(dataProvider="provideNumbers", groups={"groupOne","groupTwo"})
- public void two(int param){
- System.out.println("Method two received:" + param);
- }
- }
- package org.testng;
- import com.google.inject.Injector;
- import com.google.inject.Module;
- import org.testng.internal.ClassImpl;
- import org.testng.xml.XmlTest;
- import java.util.Collection;
- import java.util.Date;
- import java.util.List;
- /**
- * This class defines a test context which contains all the information
- * for a given test run. An instance of this context is passed to the
- * test listeners so they can query information about their
- * environment.
- *
- * @author Cedric Beust, Aug 6, 2004
- */
- public interface ITestContext extends IAttributes {
- /**
- * The name of this test.
- */
- public String getName();
- /**
- * When this test started running.
- */
- public Date getStartDate();
- /**
- * When this test stopped running.
- */
- public Date getEndDate();
- /**
- * @return A list of all the tests that run successfully.
- */
- public IResultMap getPassedTests();
- /**
- * @return A list of all the tests that were skipped
- */
- public IResultMap getSkippedTests();
- /**
- * @return A list of all the tests that failed but are being ignored because
- * annotated with a successPercentage.
- */
- public IResultMap getFailedButWithinSuccessPercentageTests();
- /**
- * @return A map of all the tests that passed, indexed by
- * their ITextMethor.
- *
- * @see org.testng.ITestNGMethod
- */
- public IResultMap getFailedTests();
- /**
- * @return All the groups that are included for this test run.
- */
- public String[] getIncludedGroups();
- /**
- * @return All the groups that are excluded for this test run.
- */
- public String[] getExcludedGroups();
- /**
- * @return Where the reports will be generated.
- */
- public String getOutputDirectory();
- /**
- * @return The Suite object that was passed to the runner
- * at start-up.
- */
- public ISuite getSuite();
- /**
- * @return All the test methods that were run.
- */
- public ITestNGMethod[] getAllTestMethods();
- /**
- * @return The host where this test was run, or null if it was run locally. The
- * returned string has the form: host:port
- */
- public String getHost();
- /**
- * @return All the methods that were not included in this test run.
- */
- public Collection<ITestNGMethod> getExcludedMethods();
- /**
- * Retrieves information about the successful configuration method invocations.
- */
- public IResultMap getPassedConfigurations();
- /**
- * Retrieves information about the skipped configuration method invocations.
- */
- public IResultMap getSkippedConfigurations();
- /**
- * Retrieves information about the failed configuration method invocations.
- */
- public IResultMap getFailedConfigurations();
- /**
- * @return the current XmlTest.
- */
- public XmlTest getCurrentXmlTest();
- public List<Module> getGuiceModules(Class<? extends Module> cls);
- public Injector getInjector(List<Module> moduleInstances);
- Injector getInjector(IClass iClass);
- public void addInjector(List<Module> moduleInstances, Injector injector);
- }