// Copyright © 2011-2013, Esko Luontola <www.orfjackal.net> // This software is released under the Apache License 2.0. // The license text is at http://www.apache.org/licenses/LICENSE-2.0 package fi.jumi.core.results; import fi.jumi.api.drivers.TestId; import fi.jumi.core.api.*; import org.junit.Test; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.is; public class SuiteResultsSummaryTest { private static final TestFile TEST_FILE = TestFile.fromClassName("TestFile"); private final SuiteResultsSummary summary = new SuiteResultsSummary(); private final RunId unimportant = null; @Test public void passing_tests_are_tests_without_failures() { summary.onTestStarted(unimportant, TEST_FILE, TestId.ROOT); assertThat("passing tests", summary.getPassingTests(), is(1)); assertThat("failing tests", summary.getFailingTests(), is(0)); assertThat("total tests", summary.getTotalTests(), is(1)); } @Test public void failing_tests_are_tests_with_failures() { summary.onTestStarted(unimportant, TEST_FILE, TestId.ROOT); summary.onFailure(unimportant, TEST_FILE, TestId.ROOT, StackTrace.from(new Throwable("failure"))); assertThat("passing tests", summary.getPassingTests(), is(0)); assertThat("failing tests", summary.getFailingTests(), is(1)); assertThat("total tests", summary.getTotalTests(), is(1)); } @Test public void a_test_with_multiple_failures_counts_as_just_one_failing_test() { summary.onTestStarted(unimportant, TEST_FILE, TestId.ROOT); summary.onFailure(unimportant, TEST_FILE, TestId.ROOT, StackTrace.from(new Throwable("failure 1"))); summary.onFailure(unimportant, TEST_FILE, TestId.ROOT, StackTrace.from(new Throwable("failure 2"))); assertThat("passing tests", summary.getPassingTests(), is(0)); assertThat("failing tests", summary.getFailingTests(), is(1)); assertThat("total tests", summary.getTotalTests(), is(1)); } @Test public void multiple_tests_with_failures_counts_as_multiple_failing_tests() { summary.onTestStarted(unimportant, TEST_FILE, TestId.of(1)); summary.onFailure(unimportant, TEST_FILE, TestId.of(1), StackTrace.from(new Throwable("failure 1"))); summary.onTestStarted(unimportant, TEST_FILE, TestId.of(2)); summary.onFailure(unimportant, TEST_FILE, TestId.of(2), StackTrace.from(new Throwable("failure 2"))); assertThat("passing tests", summary.getPassingTests(), is(0)); assertThat("failing tests", summary.getFailingTests(), is(2)); assertThat("total tests", summary.getTotalTests(), is(2)); } @Test public void multiple_executions_of_the_same_test_counts_as_just_one_test() { summary.onTestStarted(new RunId(1), TEST_FILE, TestId.ROOT); summary.onTestStarted(new RunId(2), TEST_FILE, TestId.ROOT); assertThat("total tests", summary.getTotalTests(), is(1)); } @Test public void tests_are_uniquely_identified_by_their_TestFile_and_TestId() { summary.onTestStarted(unimportant, TEST_FILE, TestId.ROOT); summary.onTestStarted(unimportant, TEST_FILE, TestId.of(1)); // different TestId summary.onTestStarted(unimportant, TestFile.fromClassName("TestFile2"), TestId.ROOT); // different TestFile assertThat("total tests", summary.getTotalTests(), is(3)); } }