junit assumption failure: ensure started/finished pair (IDEA-166556)

This commit is contained in:
Anna Kozlova
2017-01-24 12:08:03 +03:00
parent ca75e8fd4b
commit d4ea26ff74
2 changed files with 99 additions and 7 deletions
@@ -655,6 +655,104 @@ public class JUnitTreeByDescriptionHierarchyTest {
}
@Test
public void testAssumptionFailures() throws Exception {
Description root = Description.createSuiteDescription("root");
for (int i = 0; i< 5; i++) {
Description testClassDescription = Description.createSuiteDescription("Test" + i);
root.addChild(testClassDescription);
testClassDescription.addChild(Description.createTestDescription("Test" + i, "testName"));
}
final StringBuffer buf = new StringBuffer();
final JUnit4TestListener sender = createListener(buf);
sender.sendTree(root);
Assert.assertEquals("output: " + buf, "##teamcity[enteredTheMatrix]\n" +
"##teamcity[suiteTreeStarted name='Test0' locationHint='java:suite://Test0']\n" +
"##teamcity[suiteTreeNode name='Test0.testName' locationHint='java:test://Test0.testName']\n" +
"##teamcity[suiteTreeEnded name='Test0']\n" +
"##teamcity[suiteTreeStarted name='Test1' locationHint='java:suite://Test1']\n" +
"##teamcity[suiteTreeNode name='Test1.testName' locationHint='java:test://Test1.testName']\n" +
"##teamcity[suiteTreeEnded name='Test1']\n" +
"##teamcity[suiteTreeStarted name='Test2' locationHint='java:suite://Test2']\n" +
"##teamcity[suiteTreeNode name='Test2.testName' locationHint='java:test://Test2.testName']\n" +
"##teamcity[suiteTreeEnded name='Test2']\n" +
"##teamcity[suiteTreeStarted name='Test3' locationHint='java:suite://Test3']\n" +
"##teamcity[suiteTreeNode name='Test3.testName' locationHint='java:test://Test3.testName']\n" +
"##teamcity[suiteTreeEnded name='Test3']\n" +
"##teamcity[suiteTreeStarted name='Test4' locationHint='java:suite://Test4']\n" +
"##teamcity[suiteTreeNode name='Test4.testName' locationHint='java:test://Test4.testName']\n" +
"##teamcity[suiteTreeEnded name='Test4']\n" +
"##teamcity[treeEnded]\n", StringUtil.convertLineSeparators(buf.toString()));
buf.setLength(0);
sender.testRunStarted(root);
final Exception exception = new Exception();
exception.setStackTrace(new StackTraceElement[0]);
int idx = 0;
for (Description description : root.getChildren()) {
if (idx++ % 2 != 0) {
sender.testAssumptionFailure(new Failure(description, exception));
}
else {
for (Description testDescription : description.getChildren()) {
sender.testStarted(testDescription);
sender.testFinished(testDescription);
}
}
}
sender.testRunFinished(new Result());
Assert.assertEquals("output: " + buf, "##teamcity[rootName name = 'root' location = 'java:suite://root']\n" +
"\n" +
"##teamcity[testSuiteStarted name='Test0']\n" +
"\n" +
"##teamcity[testStarted name='Test0.testName' locationHint='java:test://Test0.testName']\n" +
"\n" +
"##teamcity[testFinished name='Test0.testName']\n" +
"\n" +
"##teamcity[testSuiteFinished name='Test0']\n" +
"\n" +
"##teamcity[testSuiteStarted name='Test1']\n" +
"\n" +
"##teamcity[testStarted name='Test1.testName' locationHint='java:test://Test1.testName']\n" +
"\n" +
"##teamcity[testIgnored name='Test1.testName' details='java.lang.Exception|n' error='true' message='']\n" +
"\n" +
"##teamcity[testFinished name='Test1.testName']\n" +
"\n" +
"##teamcity[testSuiteFinished name='Test1']\n" +
"\n" +
"##teamcity[testSuiteStarted name='Test2']\n" +
"\n" +
"##teamcity[testStarted name='Test2.testName' locationHint='java:test://Test2.testName']\n" +
"\n" +
"##teamcity[testFinished name='Test2.testName']\n" +
"\n" +
"##teamcity[testSuiteFinished name='Test2']\n" +
"\n" +
"##teamcity[testSuiteStarted name='Test3']\n" +
"\n" +
"##teamcity[testStarted name='Test3.testName' locationHint='java:test://Test3.testName']\n" +
"\n" +
"##teamcity[testIgnored name='Test3.testName' details='java.lang.Exception|n' error='true' message='']\n" +
"\n" +
"##teamcity[testFinished name='Test3.testName']\n" +
"\n" +
"##teamcity[testSuiteFinished name='Test3']\n" +
"\n" +
"##teamcity[testSuiteStarted name='Test4']\n" +
"\n" +
"##teamcity[testStarted name='Test4.testName' locationHint='java:test://Test4.testName']\n" +
"\n" +
"##teamcity[testFinished name='Test4.testName']\n" +
"\n" +
"##teamcity[testSuiteFinished name='Test4']\n", StringUtil.convertLineSeparators(buf.toString()));
}
@Test
public void testSingleMethod() throws Exception {
final Description rootDescription = Description.createTestDescription("TestA", "testName");
@@ -45,7 +45,6 @@ public class JUnit4TestListener extends RunListener {
private final PrintStream myPrintStream;
private String myRootName;
private long myCurrentTestStart;
private int myFinishedCount = 0;
private Description myCurrentTest;
private Map myWaitingQueue = new LinkedHashMap();
@@ -130,7 +129,6 @@ public class JUnit4TestListener extends RunListener {
for (int i = myStartedSuites.size() - 1; i >= idx; i--) {
currentClass = (Description)myStartedSuites.remove(i);
myFinishedCount = 0;
myPrintStream.println("\n##teamcity[testSuiteFinished name=\'" + escapeName(getShortName(JUnit4ReflectionUtil.getClassName(currentClass))) + "\']");
}
@@ -195,7 +193,6 @@ public class JUnit4TestListener extends RunListener {
private void testFinishedNoDumping(final String methodName) {
if (methodName != null) {
myFinishedCount++;
final long duration = currentTime() - myCurrentTestStart;
myPrintStream.println("\n##teamcity[testFinished name=\'" + escapeName(methodName) +
(duration > 0 ? "\' duration=\'" + Long.toString(duration) : "") + "\']");
@@ -216,16 +213,13 @@ public class JUnit4TestListener extends RunListener {
testFailure(failure, description, messageName, CLASS_CONFIGURATION);
classConfigurationFinished(description);
}
if (myFinishedCount == 0) {
//only setup failures
if (myStartedSuites.isEmpty() || !description.equals(myStartedSuites.get(myStartedSuites.size() - 1))) {
for (Iterator iterator = description.getChildren().iterator(); iterator.hasNext(); ) {
Description next = (Description)iterator.next();
testStarted(next);
testFailure(isIgnored ? failure : null, next, MapSerializerUtil.TEST_IGNORED);
testFinished(next);
}
myFinishedCount = 0;
}
}
else {