Replaced @Test(sequential) with @Test(singleThreaded)
diff --git a/CHANGES.txt b/CHANGES.txt
index fbd04a6..ce5e36c 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -7,6 +7,7 @@
Added: Passing command line properties via the ant task and doc update (Todd Wells)
Added: Hierarchical XmlSuites (Nalin Makar)
Added: Reporter#clear()
+Fixed: Replaced @Test(sequential) with @Test(singleThreaded)
Fixed: If inherited configuration methods had defined deps, they could be invoked in incorrect order (Nalin Makar)
Fixed: Initialize all Suite/Test runners at beginning to catch configuration issues right at start (Nalin Makar)
Fixed: Issue7: Issue86 Incorrect dates reported for configuration methods
diff --git a/doc/documentation-main.html b/doc/documentation-main.html
index 7ccd11f..67019ed 100644
--- a/doc/documentation-main.html
+++ b/doc/documentation-main.html
@@ -499,10 +499,10 @@
<td>
</td>
<td>
-<tt>sequential</tt>
+<tt>singleThreaded</tt>
</td>
<td>
- If set to true, all the methods on this test class are guaranteed to run sequentially, even if the tests are currently being run with parallel="methods". This attribute can only be used at the class level and it will be ignored if used at the method level.
+ If set to true, all the methods on this test class are guaranteed to run in the same thread, even if the tests are currently being run with parallel="methods". This attribute can only be used at the class level and it will be ignored if used at the method level. Note: this attribute used to be called <tt>sequential</tt> (now deprecated).
</td>
</tr>
diff --git a/src/org/testng/TestRunner.java b/src/org/testng/TestRunner.java
index 99e3669..b70cf71 100644
--- a/src/org/testng/TestRunner.java
+++ b/src/org/testng/TestRunner.java
@@ -730,7 +730,7 @@
org.testng.annotations.ITestAnnotation.class);
// If either sequential=true or parallel=classes, mark this class sequential
- if (test != null && test.getSequential() ||
+ if (test != null && (test.getSequential() || test.getSingleThreaded()) ||
XmlSuite.PARALLEL_CLASSES.equals(xmlTest.getParallel())) {
sequentialClasses.add(cls);
}
@@ -1131,7 +1131,7 @@
(org.testng.annotations.ITestAnnotation) m_annotationFinder.
findAnnotation(cls, org.testng.annotations.ITestAnnotation.class);
if (test != null) {
- if (test.getSequential()) {
+ if (test.getSequential() || test.getSingleThreaded()) {
String className = tm.getTestClass().getName();
List<ITestNGMethod> list = sequentialAttributeList.get(className);
if (list == null) {
diff --git a/src/org/testng/annotations/ITestAnnotation.java b/src/org/testng/annotations/ITestAnnotation.java
index b062141..2729a39 100755
--- a/src/org/testng/annotations/ITestAnnotation.java
+++ b/src/org/testng/annotations/ITestAnnotation.java
@@ -61,6 +61,9 @@
public boolean getSequential();
public void setSequential(boolean f);
+ public boolean getSingleThreaded();
+ public void setSingleThreaded(boolean f);
+
public String getDataProvider();
public void setDataProvider(String v);
diff --git a/src/org/testng/annotations/Test.java b/src/org/testng/annotations/Test.java
index e8c460c..a9fafd8 100755
--- a/src/org/testng/annotations/Test.java
+++ b/src/org/testng/annotations/Test.java
@@ -139,7 +139,12 @@
* attribute is ignore if @Test is not at the class level.
*/
public String testName() default "";
-
+
+ /**
+ * @deprecated Use singleThreaded
+ */
+ public boolean sequential() default false;
+
/**
* If set to true, all the methods on this test class are guaranteed to run
* sequentially, even if the tests are currently being run with parallel="true".
@@ -147,7 +152,7 @@
* This attribute can only be used at the class level and will be ignored
* if used at the method level.
*/
- public boolean sequential() default false;
+ public boolean singleThreaded() default false;
/**
* The name of the class that should be called to test if the test
diff --git a/src/org/testng/internal/annotations/JDK15TagFactory.java b/src/org/testng/internal/annotations/JDK15TagFactory.java
index dd239c0..ca050d4 100755
--- a/src/org/testng/internal/annotations/JDK15TagFactory.java
+++ b/src/org/testng/internal/annotations/JDK15TagFactory.java
@@ -392,6 +392,7 @@
result.setSuiteName(test.suiteName());
result.setTestName(test.testName());
result.setSequential(test.sequential());
+ result.setSingleThreaded(test.singleThreaded());
result.setRetryAnalyzer(test.retryAnalyzer());
result.setSkipFailedInvocations(test.skipFailedInvocations());
result.setIgnoreMissingDependencies(test.ignoreMissingDependencies());
diff --git a/src/org/testng/internal/annotations/TestAnnotation.java b/src/org/testng/internal/annotations/TestAnnotation.java
index 6a6e503..22e84b4 100755
--- a/src/org/testng/internal/annotations/TestAnnotation.java
+++ b/src/org/testng/internal/annotations/TestAnnotation.java
@@ -22,6 +22,7 @@
private String m_expectedExceptionsMessageRegExp = ".*";
private String m_suiteName = "";
private String m_testName = "";
+ private boolean m_singleThreaded = false;
private boolean m_sequential = false;
private Class<?> m_dataProviderClass = null;
private IRetryAnalyzer m_retryAnalyzer = null;
@@ -132,6 +133,14 @@
m_testName = xmlTest;
}
+ public boolean getSingleThreaded() {
+ return m_singleThreaded;
+ }
+
+ public void setSingleThreaded(boolean singleThreaded) {
+ m_singleThreaded = singleThreaded;
+ }
+
public boolean getSequential() {
return m_sequential;
}
diff --git a/test/src/test/thread/BaseSequentialSample.java b/test/src/test/thread/BaseSequentialSample.java
index 602ca16..06cff10 100644
--- a/test/src/test/thread/BaseSequentialSample.java
+++ b/test/src/test/thread/BaseSequentialSample.java
@@ -18,7 +18,7 @@
protected void ppp(String s) {
if (false) {
- System.out.println("[" + getClass().getName() + " "
+ System.out.println("[BaseSequentialSample:" + getClass().getName() + " "
+ Thread.currentThread().getId() + " "
+ "] " + s);
}
diff --git a/test/src/test/thread/SequentialSample2Test.java b/test/src/test/thread/SequentialSample2Test.java
index 80caf73..856652f 100644
--- a/test/src/test/thread/SequentialSample2Test.java
+++ b/test/src/test/thread/SequentialSample2Test.java
@@ -5,17 +5,14 @@
@Test(sequential = true)
public class SequentialSample2Test extends BaseSequentialSample {
- @Test
public void f1() {
addId("SequentialSample2Test.f1()", Thread.currentThread().getId());
}
- @Test
public void f2() {
addId("SequentialSample2Test.f2()", Thread.currentThread().getId());
}
- @Test
public void f3() {
addId("SequentialSample2Test.f3()", Thread.currentThread().getId());
}
diff --git a/test/src/test/thread/SequentialSample3Test.java b/test/src/test/thread/SequentialSample3Test.java
index 578c406..94db51c 100644
--- a/test/src/test/thread/SequentialSample3Test.java
+++ b/test/src/test/thread/SequentialSample3Test.java
@@ -5,17 +5,14 @@
@Test(sequential = true)
public class SequentialSample3Test extends BaseSequentialSample {
- @Test
public void f1() {
addId("SequentialSample3Test.f1()", Thread.currentThread().getId());
}
- @Test // (dependsOnMethods = "f1")
public void f2() {
addId("SequentialSample3Test.f2()", Thread.currentThread().getId());
}
- @Test // (dependsOnMethods = "f2")
public void f3() {
addId("SequentialSample3Test.f3()", Thread.currentThread().getId());
}
diff --git a/test/src/test/thread/SequentialSampleTest.java b/test/src/test/thread/SequentialSampleTest.java
index cba2a24..d509faf 100644
--- a/test/src/test/thread/SequentialSampleTest.java
+++ b/test/src/test/thread/SequentialSampleTest.java
@@ -5,17 +5,14 @@
@Test(sequential = true)
public class SequentialSampleTest extends BaseSequentialSample {
- @Test
public void f1() {
addId("SequentialSampleTest.f1()", Thread.currentThread().getId());
}
- @Test
public void f2() {
addId("SequentialSampleTest.f2()", Thread.currentThread().getId());
}
- @Test
public void f3() {
addId("SequentialSampleTest.f3()", Thread.currentThread().getId());
}
diff --git a/test/src/test/thread/SequentialTest.java b/test/src/test/thread/SequentialTest.java
index c7cdd68..ce10534 100644
--- a/test/src/test/thread/SequentialTest.java
+++ b/test/src/test/thread/SequentialTest.java
@@ -26,11 +26,35 @@
verifySequential(3);
}
- public void verifySequential(int threadCount) {
- runTest(threadCount, "test.thread.SequentialSampleTest",
- "test.thread.SequentialSample2Test", "test.thread.SequentialSample3Test");
+ @Test
+ public void verifySingleThreaded1() {
+ verifySingleThreaded(1);
+ }
+
+ @Test
+ public void verifySingleThreaded2() {
+ verifySingleThreaded(2);
}
+ @Test
+ public void verifySingleThreaded3() {
+ verifySingleThreaded(3);
+ }
+
+ public void verifySequential(int threadCount) {
+ runTest(threadCount,
+ SequentialSampleTest.class.getName(),
+ SequentialSample2Test.class.getName(),
+ SequentialSample3Test.class.getName());
+ }
+
+ public void verifySingleThreaded(int threadCount) {
+ runTest(threadCount,
+ SingleThreadedSampleTest.class.getName(),
+ SingleThreadedSample2Test.class.getName(),
+ SingleThreadedSample3Test.class.getName());
+ }
+
private void runTest(int threadCount, String... classes) {
Helper.reset();
diff --git a/test/src/test/thread/SingleThreadedSample2Test.java b/test/src/test/thread/SingleThreadedSample2Test.java
new file mode 100644
index 0000000..c6e4c41
--- /dev/null
+++ b/test/src/test/thread/SingleThreadedSample2Test.java
@@ -0,0 +1,23 @@
+package test.thread;
+
+import org.testng.annotations.Test;
+
+@Test(singleThreaded = true)
+public class SingleThreadedSample2Test extends BaseSequentialSample {
+
+ @Test
+ public void f1() {
+ addId("SingleThreadedSample2Test.f1()", Thread.currentThread().getId());
+ }
+
+ @Test
+ public void f2() {
+ addId("SingleThreadedSample2Test.f2()", Thread.currentThread().getId());
+ }
+
+ @Test
+ public void f3() {
+ addId("SingleThreadedSample2Test.f3()", Thread.currentThread().getId());
+ }
+
+}
diff --git a/test/src/test/thread/SingleThreadedSample3Test.java b/test/src/test/thread/SingleThreadedSample3Test.java
new file mode 100644
index 0000000..dbc2e52
--- /dev/null
+++ b/test/src/test/thread/SingleThreadedSample3Test.java
@@ -0,0 +1,23 @@
+package test.thread;
+
+import org.testng.annotations.Test;
+
+@Test(singleThreaded = true)
+public class SingleThreadedSample3Test extends BaseSequentialSample {
+
+ @Test
+ public void f1() {
+ addId("SingleThreadedSample3Test.f1()", Thread.currentThread().getId());
+ }
+
+ @Test // (dependsOnMethods = "f1")
+ public void f2() {
+ addId("SingleThreadedSample3Test.f2()", Thread.currentThread().getId());
+ }
+
+ @Test // (dependsOnMethods = "f2")
+ public void f3() {
+ addId("SingleThreadedSample3Test.f3()", Thread.currentThread().getId());
+ }
+
+}
diff --git a/test/src/test/thread/SingleThreadedSampleTest.java b/test/src/test/thread/SingleThreadedSampleTest.java
new file mode 100644
index 0000000..1e3b7db
--- /dev/null
+++ b/test/src/test/thread/SingleThreadedSampleTest.java
@@ -0,0 +1,23 @@
+package test.thread;
+
+import org.testng.annotations.Test;
+
+@Test(singleThreaded = true)
+public class SingleThreadedSampleTest extends BaseSequentialSample {
+
+ @Test
+ public void f1() {
+ addId("SingleThreadedSampleTest.f1()", Thread.currentThread().getId());
+ }
+
+ @Test
+ public void f2() {
+ addId("SingleThreadedSampleTest.f2()", Thread.currentThread().getId());
+ }
+
+ @Test
+ public void f3() {
+ addId("SingleThreadedSampleTest.f3()", Thread.currentThread().getId());
+ }
+
+}
diff --git a/test/testng-single.xml b/test/testng-single.xml
index 2d4c5ff..2078a91 100644
--- a/test/testng-single.xml
+++ b/test/testng-single.xml
@@ -1,6 +1,6 @@
<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
-<suite name="SingleSuite" verbose="2" parallel="false" thread-count="4"
+<suite name="SingleSuite" verbose="1" parallel="false" thread-count="4"
data-provider-thread-count="3">
<parameter name="n" value="42" />
@@ -26,11 +26,11 @@
</groups>
<parameter name="count" value="10"/>
<classes>
- <class name="test.tmp.TestFactory" />
+ <class name="test.thread.SequentialTest" />
<!--
+ <class name="test.tmp.TestFactory" />
<class name="test.tmp.A" />
<class name="test.thread.MultiThreadedDependentTest" />
- <class name="test.thread.FactoryTest" />
<class name="test.tmp.B" />
<class name="test.thread.MultiThreadedDependentTest" />
<class name="test.thread.FactoryTest" />