package fitnesse.junit; import fitnesse.responders.run.JavaFormatter; import junit.framework.Assert; import org.junit.Before; import org.junit.Test; import java.io.File; import java.util.Arrays; import java.util.HashSet; public class JUnitHelperExampleTest { JUnitHelper helper; String[] expectedTests = { "FitNesse.SuiteAcceptanceTests.SuiteSlimTests.ErikPragtBug", "FitNesse.SuiteAcceptanceTests.SuiteSlimTests.HashTableTests.ShouldConvertHashWidgetToHashTable", "FitNesse.SuiteAcceptanceTests.SuiteSlimTests.LibrarySuite.LastLibraryPreceedsEarlierLibraryTest", "FitNesse.SuiteAcceptanceTests.SuiteSlimTests.LibrarySuite.LibraryInSetUpSuite.LibraryInSetUpAndPageTest", "FitNesse.SuiteAcceptanceTests.SuiteSlimTests.LibrarySuite.LibraryInSetUpSuite.LibraryInSetUpTest", "FitNesse.SuiteAcceptanceTests.SuiteSlimTests.LibrarySuite.OneLibraryTest", "FitNesse.SuiteAcceptanceTests.SuiteSlimTests.MultiByteCharsInSlim", "FitNesse.SuiteAcceptanceTests.SuiteSlimTests.ParameterizedScenarios", "FitNesse.SuiteAcceptanceTests.SuiteSlimTests.ScenarioLibraryTestSuite.BlankCellsInNestedScenariosShouldWork", "FitNesse.SuiteAcceptanceTests.SuiteSlimTests.ScenarioLibraryTestSuite.BrotherScenarioLibraryIsIncluded", "FitNesse.SuiteAcceptanceTests.SuiteSlimTests.ScenarioLibraryTestSuite.ManyUnclesAreIncluded", "FitNesse.SuiteAcceptanceTests.SuiteSlimTests.ScenarioLibraryTestSuite.NoScenarioSectionIfThereAreNone", "FitNesse.SuiteAcceptanceTests.SuiteSlimTests.ScenarioLibraryTestSuite.ScenarioLibrariesAreIncludedInTheCorrectOrder", "FitNesse.SuiteAcceptanceTests.SuiteSlimTests.ScenarioLibraryTestSuite.ScenarioLibrariesOnlyIncludedInTestPages", "FitNesse.SuiteAcceptanceTests.SuiteSlimTests.ScenarioLibraryTestSuite.ScenariosOnlyInSlimTests", "FitNesse.SuiteAcceptanceTests.SuiteSlimTests.SlimSymbolsCanBeBlankOrNull", "FitNesse.SuiteAcceptanceTests.SuiteSlimTests.SystemUnderTestTest", "FitNesse.SuiteAcceptanceTests.SuiteSlimTests.TableTableReturnsNull", "FitNesse.SuiteAcceptanceTests.SuiteSlimTests.TestCanPassSymbolsIntoConstructors", "FitNesse.SuiteAcceptanceTests.SuiteSlimTests.TestComparators", "FitNesse.SuiteAcceptanceTests.SuiteSlimTests.SlimSymbolDollarDollar", "FitNesse.SuiteAcceptanceTests.SuiteSlimTests.TestOrderedQueryWithDuplicateRows", "FitNesse.SuiteAcceptanceTests.SuiteSlimTests.TestPageWithInclude", "FitNesse.SuiteAcceptanceTests.SuiteSlimTests.TestSequentialArgumentProcessing", "FitNesse.SuiteAcceptanceTests.SuiteSlimTests.TestSubsetQuery", "FitNesse.SuiteAcceptanceTests.SuiteSlimTests.TestSymbolsDontGetTurnedToStringsInTheOutput", "FitNesse.SuiteAcceptanceTests.SuiteSlimTests.TestTwoIdenticalTablesOnPageDontConflict", "FitNesse.SuiteAcceptanceTests.SuiteSlimTests.RegularExpressionMatching", "FitNesse.SuiteAcceptanceTests.SuiteSlimTests.ChainTest" }; private String[] expectedTestsWithSuiteFilter = new String[]{ "FitNesse.SuiteAcceptanceTests.SuiteSlimTests.ErikPragtBug", "FitNesse.SuiteAcceptanceTests.SuiteSlimTests.MultiByteCharsInSlim" }; @Before public void prepare() { helper = new JUnitHelper(".", new File(System.getProperty("java.io.tmpdir"), "fitnesse").getAbsolutePath()); JavaFormatter.dropInstance("FitNesse.SuiteAcceptanceTests.SuiteSlimTests"); } @Test public void assertTestPasses_RunsATestThroughFitNesseAndWeCanInspectTheResultUsingJavaFormatter() throws Exception { String testName = "FitNesse.SuiteAcceptanceTests.SuiteSlimTests.SystemUnderTestTest"; helper.assertTestPasses(testName); JavaFormatter formatter = JavaFormatter.getInstance(testName); Assert.assertEquals(testName, formatter.getTestsExecuted().get(0)); Assert.assertEquals(1, formatter.getTestsExecuted().size()); } //todo There's a better way to do this. Create a dummy suite instead of using SuiteSlimTests // @Test // public void assertSuitePasses_RunsATestThroughFitNesseAndWeCanInspectTheResultUsingJavaFormatter() throws Exception { // helper.assertSuitePasses("FitNesse.SuiteAcceptanceTests.SuiteSlimTests"); // // JavaFormatter formatter = JavaFormatter.getInstance("FitNesse.SuiteAcceptanceTests.SuiteSlimTests"); // Assert.assertEquals(new HashSet<String>(Arrays.asList(expectedTests)), // new HashSet<String>(formatter.getTestsExecuted())); // } @Test public void assertSuitePasses_appliesSuiteFilterIfDefined() throws Exception { helper.assertSuitePasses("FitNesse.SuiteAcceptanceTests.SuiteSlimTests", "testSuite"); JavaFormatter formatter = JavaFormatter.getInstance("FitNesse.SuiteAcceptanceTests.SuiteSlimTests"); Assert.assertEquals(new HashSet<String>(Arrays.asList(expectedTestsWithSuiteFilter)), new HashSet<String>(formatter.getTestsExecuted())); } @Test public void helperWillFailTestsIfNoTestsAreExecuted() throws Exception{ try{ helper.assertSuitePasses("FitNesse.SuiteAcceptanceTests.SuiteSlimTests", "nonExistingFilter"); } catch (AssertionError ae){ Assert.assertEquals("at least one test executed", ae.getMessage()); } JavaFormatter formatter = JavaFormatter.getInstance("FitNesse.SuiteAcceptanceTests.SuiteSlimTests"); Assert.assertEquals(new HashSet<String>(), new HashSet<String>(formatter.getTestsExecuted())); } @Test public void dummy() { } }