BAEL-701 Introduction to TestNG

This commit is contained in:
dhruba619 2017-03-01 16:47:07 +05:30
parent 99c8ee5228
commit d1f0b2e554
16 changed files with 597 additions and 454 deletions

View File

@ -1,115 +1,121 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion>
<modelVersion>4.0.0</modelVersion> <groupId>com.baeldung</groupId>
<groupId>com.baeldung</groupId> <artifactId>testng</artifactId>
<artifactId>testng</artifactId> <version>0.1.0-SNAPSHOT</version>
<version>0.1.0-SNAPSHOT</version> <packaging>jar</packaging>
<packaging>jar</packaging> <name>testng</name>
<name>testng</name>
<dependencies> <dependencies>
<!-- logging --> <!-- logging -->
<dependency> <dependency>
<groupId>org.slf4j</groupId> <groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId> <artifactId>slf4j-api</artifactId>
<version>${org.slf4j.version}</version> <version>${org.slf4j.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>ch.qos.logback</groupId> <groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId> <artifactId>logback-classic</artifactId>
<version>${logback.version}</version> <version>${logback.version}</version>
</dependency> </dependency>
<!-- test scoped --> <!-- test scoped -->
<dependency> <dependency>
<groupId>org.testng</groupId> <groupId>org.testng</groupId>
<artifactId>testng</artifactId> <artifactId>testng</artifactId>
<version>${testng.version}</version> <version>${testng.version}</version>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
</dependencies> </dependencies>
<build> <build>
<finalName>testng</finalName> <finalName>testng</finalName>
<resources> <resources>
<resource> <resource>
<directory>src/main/resources</directory> <directory>src/main/resources</directory>
<filtering>true</filtering> <filtering>true</filtering>
</resource> </resource>
</resources> </resources>
<testResources> <testResources>
<testResource> <testResource>
<directory>src/main/resources</directory> <directory>src/main/resources</directory>
<filtering>true</filtering> <filtering>true</filtering>
</testResource> </testResource>
</testResources> </testResources>
<plugins> <plugins>
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId> <artifactId>maven-compiler-plugin</artifactId>
<version>${maven-compiler-plugin.version}</version> <version>${maven-compiler-plugin.version}</version>
<configuration> <configuration>
<source>1.8</source> <source>1.8</source>
<target>1.8</target> <target>1.8</target>
</configuration> </configuration>
</plugin> </plugin>
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId> <artifactId>maven-surefire-plugin</artifactId>
<version>${maven-surefire-plugin.version}</version> <version>${maven-surefire-plugin.version}</version>
<configuration> <configuration>
<excludes> <excludes>
<exclude>**/*IntegrationTest.java</exclude> <exclude>**/*IntegrationTest.java</exclude>
<exclude>**/*LongRunningUnitTest.java</exclude> <exclude>**/*LongRunningUnitTest.java</exclude>
<exclude>**/*ManualTest.java</exclude> <exclude>**/*ManualTest.java</exclude>
</excludes> </excludes>
<testFailureIgnore>true</testFailureIgnore> <suiteXmlFiles>
</configuration> <suiteXmlFile>src\test\resources\parametrized_testng.xml</suiteXmlFile>
</plugin> <suiteXmlFile>src\test\resources\test_group.xml</suiteXmlFile>
<suiteXmlFile>src\test\resources\test_setup.xml</suiteXmlFile>
<suiteXmlFile>src\test\resources\test_suite.xml</suiteXmlFile>
</suiteXmlFiles>
<plugin> <testFailureIgnore>true</testFailureIgnore>
<groupId>org.apache.maven.plugins</groupId> </configuration>
<artifactId>maven-dependency-plugin</artifactId> </plugin>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>prepare-package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/libs</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build> <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>prepare-package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/libs</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
<properties> </build>
<!-- logging --> <properties>
<org.slf4j.version>1.7.21</org.slf4j.version>
<logback.version>1.1.7</logback.version>
<!-- testing --> <!-- logging -->
<testng.version>6.10</testng.version> <org.slf4j.version>1.7.21</org.slf4j.version>
<logback.version>1.1.7</logback.version>
<!-- maven plugins --> <!-- testing -->
<maven-compiler-plugin.version>3.6.0</maven-compiler-plugin.version> <testng.version>6.10</testng.version>
<maven-surefire-plugin.version>2.19.1</maven-surefire-plugin.version>
</properties> <!-- maven plugins -->
<maven-compiler-plugin.version>3.6.0</maven-compiler-plugin.version>
<maven-surefire-plugin.version>2.19.1</maven-surefire-plugin.version>
</properties>
</project> </project>

View File

@ -0,0 +1,14 @@
package baeldung.com;
import org.testng.Assert;
import org.testng.annotations.Test;
public class MultiThreadedTests {
@Test(threadPoolSize = 5, invocationCount = 10, timeOut = 1000)
public void givenMethod_whenRunInThreads_thenCorrect(){
int count = Thread.activeCount();
Assert.assertTrue(count>1);
}
}

View File

@ -0,0 +1,67 @@
package com.baeldung.reports;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.ITestContext;
import org.testng.ITestListener;
import org.testng.ITestResult;
public class CustomisedListener implements ITestListener {
private static final Logger LOGGER = LoggerFactory.getLogger("TEST_REPORT");
@Override
public void onFinish(ITestContext arg0) {
LOGGER.info("PASSED TEST CASES");
arg0.getPassedTests()
.getAllResults()
.stream()
.forEach(result -> {
LOGGER.info(result.getName());
});
LOGGER.info("FAILED TEST CASES");
arg0.getFailedTests()
.getAllResults()
.stream()
.forEach(result -> {
LOGGER.info(result.getName());
});
LOGGER.info("Test completed on: "+arg0.getEndDate().toString());
}
@Override
public void onStart(ITestContext arg0) {
LOGGER.info("Started testing on: " + arg0.getStartDate()
.toString());
}
@Override
public void onTestFailedButWithinSuccessPercentage(ITestResult arg0) {
// TODO Auto-generated method stub
}
@Override
public void onTestFailure(ITestResult arg0) {
LOGGER.info("Failed : " + arg0.getName());
}
@Override
public void onTestSkipped(ITestResult arg0) {
LOGGER.info("Skipped Test: " + arg0.getName());
}
@Override
public void onTestStart(ITestResult arg0) {
LOGGER.info("Testing: " + arg0.getName() + " " + arg0.getStartMillis());
}
@Override
public void onTestSuccess(ITestResult arg0) {
LOGGER.info("Tested: " + arg0.getName() + " " + arg0.getEndMillis());
}
}

View File

@ -0,0 +1,50 @@
package com.baeldung.reports;
import java.util.List;
import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.IReporter;
import org.testng.ISuite;
import org.testng.ISuiteResult;
import org.testng.ITestContext;
import org.testng.xml.XmlSuite;
public class CustomisedReports implements IReporter {
private static final Logger LOGGER = LoggerFactory.getLogger("TEST_REPORT");
@Override
public void generateReport(List<XmlSuite> xmlSuites, List<ISuite> suites, String outputDirectory) {
suites.stream()
.forEach(suite -> {
String suiteName = suite.getName();
Map<String, ISuiteResult> suiteResults = suite.getResults();
suiteResults.values()
.stream()
.forEach(result -> {
ITestContext context
= ((ISuiteResult) result).getTestContext();
LOGGER.info("Passed tests for suite '"
+ suiteName + "' is:"
+ context.getPassedTests()
.getAllResults()
.size());
LOGGER.info("Failed tests for suite '"
+ suiteName + "' is:"
+ context.getFailedTests()
.getAllResults()
.size());
LOGGER.info("Skipped tests for suite '"
+ suiteName + "' is:"
+ context.getSkippedTests()
.getAllResults()
.size());
});
});
}
}

View File

@ -1,5 +1,8 @@
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="My test suite"> <suite name="My test suite">
<listeners>
<listener class-name="com.baeldung.reports.CustomisedListener"></listener>
</listeners>
<test name="numbersXML"> <test name="numbersXML">
<parameter name="value" value="1"/> <parameter name="value" value="1"/>
<parameter name="isEven" value="false"/> <parameter name="isEven" value="false"/>

View File

@ -1,8 +1,11 @@
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="suite"> <suite name="suite" parallel="classes" thread-count="2">
<listeners>
<listener class-name="com.baeldung.reports.CustomisedReports" />
</listeners>
<test name="test suite"> <test name="test suite">
<classes> <classes>
<class name="baeldung.com.RegistrationTest" /> <class name="baeldung.com.RegistrationTest" />
<class name="baeldung.com.SignInTest" /> <class name="baeldung.com.SignInTest" />
</classes> </classes>
</test> </test>