JUnit Tests can still be run from a main method
I encountered a happy coincidence today: a JUnit test can just as easily be run from a main
method. (Feel free to whisper sarcastically at this point. It was new to me!) I had begun with an old school main method test, when I realised I wanted to get more serious and write JUnit tests instead. I dutifully added my @Test
methods and in an absent minded fashion ran the class as a Java application instead of a JUnit test (from within Eclipse). Lo and behold, whatever @Test
method I called from main
still works fine and gives meaningful error information if it fails.
package test; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; @RunWith(JUnit4.class) public class Tester { public static void main(String[] args) { Tester tester = new Tester(); tester.testSomething(); System.out.println("Test complete."); } @Test public void testSomething() { Assert.assertEquals(true, false); } }
And the output when this test fails.
Exception in thread "main" junit.framework.AssertionFailedError: expected:<true> but was:<false>
at junit.framework.Assert.fail(Assert.java:50)
at junit.framework.Assert.failNotEquals(Assert.java:287)
at junit.framework.Assert.assertEquals(Assert.java:67)
at junit.framework.Assert.assertEquals(Assert.java:147)
at junit.framework.Assert.assertEquals(Assert.java:153)
at test.Tester.testSomething(Tester.java:20)
at test.Tester.main(Tester.java:14)