Writing Unit Tests

JUnit works by comparing expected output to actual output on your functions and object state. Here’s an example:

public class ExampleTest {

    @Test
    public void testSumFunction() {
        assertEquals("5 + 6 should be 11", 11, Example.sum(5, 6));
    }

}

We can also test to make sure an exception is thrown properly. Using the same setup as above:

   @Test(expected = IllegalArgumentException.class)
    public void testException() {
        SomeClass.readNonnullFile(null);
    }

You’ll find the following functions from the JUnit library useful:

assertTrue(someConditon);
assertFalse(someCondition);
assertEquals(expectedValue, actualValue);
assertEquals(expectedDouble, actualDouble, deltaValue);
assertArrayEquals(expectedArray, actualArray);

While you can put multiple assert statements in one test, you are encouraged to write tests with only one (or very few) assertions. With multiple assert statements in a test, if a single one of them fail, the whole test will fail and JUnit will only report one failure for one case. If you have your asserts separated into many different test functions, then you’ll be able to get a clearer total picture of your code’s correctness.

Running Unit Tests

To run your unit tests on Codio, navigate to Tools -> JUnit and then add all of the .java files containing your test cases in the field called “Add test case.” Then, press “Execute All” to run your selected tests.