//
// Copyright (c) 2016-2017 Eclipse Microprofile Contributors:
// Mark Struberg
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//

= Running the Microprofile Fault Tolerance TCK

Any Microprofile 1.1 and higher release must pass this test suite.
The TCK uses `testng`

== Dependencies

To enable the tests in your project you need to add the following dependency to your build:

[source, xml]
----
<dependency>
    <groupId>org.eclipse.microprofile.fault.tolerance</groupId>
    <artifactId>microprofile-fault-tolerance-api</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>

<dependency>
    <groupId>org.eclipse.microprofile.fault.tolerance</groupId>
    <artifactId>microprofile-fault-tolerance-tck</artifactId>
    <version>1.0-SNAPSHOT</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.testng</groupId>
    <artifactId>testng</artifactId>
    <version>6.9.9</version>
    <scope>test</scope>
</dependency>
----

== Using a TestNG Test Suite

You can run the tests either as a test suite or via Maven Surefire configuration.  This section is how to do it in a test suite.

=== Declaring the Tests to run

You also need to specify which tests you want to run, e.g. create a file `tck-suite.xml` in your project which contains the following content:
[source, xml]
----
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name="microprofile-fault-tolerance-TCK" verbose="2" configfailurepolicy="continue" >

    <test name="microprofile-fault-tolerance 1.0 TCK">
        <packages>
            <package name="org.eclipse.microprofile.fault.tolerance.tck.*">
            </package>
        </packages>
    </test>

</suite>
----

=== Configuration in Apache Maven pom.xml

If you use Apache Maven then the tests are run via the `maven-surefire-plugin`
[source, xml]
----
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.19.1</version>
            <configuration>
                <suiteXmlFiles>
                    <suiteXmlFile>tck-suite.xml</suiteXmlFile>
                </suiteXmlFiles>
            </configuration>
        </plugin>
    </plugins>
</build>
----

== Running as a Scanned Dependency

You can also run the TCK as a scanned dependency.

=== Surefire Configuration in your pom.xml

Once you've added the dependency, you don't need a `tck-suite.xml` you can just scan the dependency for tests.

[source, xml]
----
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.19.1</version>
            <configuration>
                <dependenciesToScan>
                    <dependency>org.eclipse.microprofile.fault.tolerance:microprofile-fault-tolerance-tck</dependency>
                </dependenciesToScan>
            </configuration>
        </plugin>
    </plugins>
</build>
----
