0.1: TestNG Author: Cedric Beust(https://twitter.com/cbeust)
0.2: TestNG Site: http://testng.org
0.3: TestNG Projects
1. TestNG: https://github.com/cbeust/testng
2. Remote-TestNG: https://github.com/testng-team/testng-remote
3. TestNG-Eclipse: https://github.com/cbeust/testng-eclipse
1.1 Knows about org.testng.annotations.Test & org.testng.Assert - different from assert keyword of Java (-ea)
1.2 Knows about difference between Java assert keyword and TestNG Assert class
1.3 Knows about the TestNG test result report - test-output/index.html.
1.4 Knows about the entry of TestNG test execution and testng.xml file.
1.1 Knows about what annotations can be used for configuration methods - @BeforeXXX and @AfterXXX, except for @BeforeGroups and @AfterGroups
1.2 Knows about the basic execution life-cycle related to configuration methods and test methods.
3.1: Knows about how to define groups in TestNG class and testng.xml file - groups of groups.
3.2: Knows about how to run groups in class and package.
3.3: Knows about how to run configuration method related to groups.
4.1: Knows about how to define test method parameters
4.2: Knows about how to define parameters in testng.xml file in suite and test level
4.3: Knows about how to use DataProvider - normal data provider and static data provider
4.4: Knows about return data type of data provider method
5.1: Knows about how to define dependency on methods and groups.
5.2: Knows about hard/soft dependency difference and usage.
5.3: Knows about dependency usage in testng.xml file.
6.1: Knows about how to use run suites/tests/classes/instances/methods in parallel respectively.
6.2: Knows about how to configure thread count in parallel execution.
6.3: Knows about how to define timeout value for parallel execution.
7.1: Knows about the automatically generated suite xml file for failed test cases under the directory specified by -d. In default, it's $user.dir/test-output/testng-failed.xml.
7.2: Use joint commands or multiple suite xml file to run test and then failed test.
8.1: Knows about the configuration in suite xml file about junit test cases/suites execution.
8.2: Limitation?
9.1: Knows about how to run TestNg by programming.
9.2: Be familiar with TestNg APIs
10.1: Knows about what's BeanShell and it's basic usage.
10.2: Knows about how to use BeanShell in suite xml file.
11.1: Knows about the purpose of Annotation Transformers -
11.2: Knows about the interface: org.testng.IAnnotationTransformer - an sub-interface of org.testng.ITestNGListener
11.2.1: org.testng.IAnnotationTransformer is used to modify the annotation:@Test
11.2.2: org.testng.IAnnotationTransformer2 can be used to modify any other annotations such as any configuration annotation or @Factory or @DataProvider
11.3: Knows about how to use the implementation in TestNG:
11.3.1: java org.testng.TestNG -listener MyTransformer testng.xml
11.3.2: TestNG tng = new TestNG(); tng.setAnnotationTransformer(new MyTransformer());
13.0: Difference between Listeners and Configuration Methods - @BeforeXXX / @AfterXXX?
Listeners - global
Configuration methods - local (suite/test/class/method)
13.1: org.testng.ITestNGListener - marker interface
13.2:
org.testng.IExecutionListener
org.testng.ISuiteListener
org.testng.ITestListener
org.testng.IClassListener
org.testng.IConfigurationListener
org.testng.IInvokedMethodListener
13.3:
org.testng.IAlterSuiteListener - Altering Suites or Tests - <listeners> or service loader
org.testng.IHookable - Overriding test methods - control test methods invocation in hook way.
org.testng.IMethodInterceptor - powerful control for test methods execution order for those without dependency
16.1: Knows about @Factory usage - create a class to provide a method with annotation @Factory. The method creates a number of Test class instances as return value.
16.2: Knows about configuration in suite xml file by using class with method having @Factory - just use the class name as value of <class name="" />
16.3: Knows about how TsetNG use / handle @Factory annotation.
F1: Knows how TestNG collects Test Method and how to organize them
org.testng.TestClass.initMethods()
org.testng.internal.TestNGMethodFinder.findConfiguration(Class, int)
F2: Knows about how to build TestNG by source code:
$ git clone git://github.com/cbeust/testng.git
$ cd testng
$ ./build-with-gradle