package test.priority;
import org.testng.Assert;
import org.testng.ITestNGListener;
import org.testng.TestNG;
import org.testng.annotations.Test;
import org.testng.xml.XmlSuite;
import test.InvokedMethodNameListener;
import test.SimpleBaseTest;
import java.util.Arrays;
import java.util.List;
public class PriorityTest extends SimpleBaseTest {
private void runTest(Class<?> cls, boolean parallel, String... methods) {
TestNG tng = create(cls);
InvokedMethodNameListener listener = new InvokedMethodNameListener();
tng.addListener((ITestNGListener) listener);
if (parallel) {
tng.setParallel(XmlSuite.ParallelMode.METHODS);
}
tng.run();
Assert.assertEquals(listener.getInvokedMethodNames().toArray(), methods);
}
@Test(enabled = false, description = "Make sure priorities work in parallel mode")
public void priorityInParallel1() {
runTest(WithPrioritySampleTest.class, true /* parallel */, "first", "second");
}
@Test(enabled = false, description = "Make sure priorities work in parallel mode")
public void priorityInParallel2() {
runTest(WithPrioritySample2Test.class, true /* parallel */, "second", "first");
}
@Test(description = "Make sure priorities work in sequential mode")
public void priorityInSequential1() {
runTest(WithPrioritySampleTest.class, false /* sequential */, "first", "second");
}
@Test(description = "Make sure priorities work in sequential mode")
public void priorityInSequential2() {
runTest(WithPrioritySample2Test.class, false /* sequential */, "second", "first");
}
@Test(description = "GITHUB #793: Test suite with tests using dependency and priority has wrong behavior")
public void priorityWithDependsOnMethods() {
runTest(WithPriorityAndDependsMethodsSample.class, false /* sequential */, "first", "second", "third");
}
@Test(description = "GITHUB #1334: Order by priority gets messed up when there are failures and dependsOnMethods")
public void priorityWithDependencyAndFailures() {
TestNG tng = create(SampleTest01.class, SampleTest02.class);
tng.setParallel(XmlSuite.ParallelMode.CLASSES);
InvokedMethodNameListener listener = new InvokedMethodNameListener();
tng.addListener((ITestNGListener) listener);
tng.run();
List<String> sampleTest01Methods = Arrays.asList("test0010_createAction", "test0030_advancedSearch",
"test0060_deleteAction");
Assert.assertEquals(listener.getMethodsForTestClass(SampleTest01.class), sampleTest01Methods);
}
}