Identifier test sets implemented with JUnit
<source lang="java"> package identifier;
import org.junit.Test; import org.junit.Assert;
public class IdentifierTestCase {
protected Identifier id;
@Test public void validate1() { id = new Identifier(); boolean result = id.validateIdentifier("Abcd5"); Assert.assertEquals(true, result); }
@Test public void validate2() { id = new Identifier(); boolean result = id.validateIdentifier("x12345"); Assert.assertEquals(true, result); }
} </source>
Now using fixtures:
<source lang="java"> package identifier;
import org.junit.Before; import org.junit.Ignore; import org.junit.Test; import org.junit.Assert;
public class IdentifierTestCase {
protected Identifier id;
@Before public void setUp() { id = new Identifier(); }
@Test public void validate1() { boolean result = id.validateIdentifier("Abcd5"); Assert.assertEquals(true, result); }
@Test public void validate2() { boolean result = id.validateIdentifier("x12345"); Assert.assertEquals(true, result); }
@Test public void validate3() { boolean result = id.validateIdentifier("&123"); Assert.assertFalse(result); }
@Test public void validate4() { boolean result = id.validateIdentifier("Inv@lido"); Assert.assertFalse(result); }
@Test public void validate5() { Assert.assertNotNull(id); }
@Test(expected=IndexOutOfBoundsException.class) public void stringException() { String str = new String("JUnit Example"); str.substring(30); }
@Test(timeout=2000) public void looping() { boolean result = id.validateIdentifier("Abcd5"); Assert.assertEquals(true, result); }
@Ignore("Out of the program scope") @Test(expected=IndexOutOfBoundsException.class) public void stringException2() { String str = new String("JUnit Example"); str.substring(30); }
} </source>
And with a parameterized JUnit test case:
<source lang="java"> package identifier;
import org.junit.Assert; import org.junit.Test; import org.junit.Before; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.junit.runners.Parameterized.*;
import java.util.Arrays; import java.util.Collection;
@RunWith(Parameterized.class) public class IdentifierParameterizedTestCase {
private Identifier id;
private String param; private boolean expected;
@Before public void initialize() { id = new Identifier(); }
@Parameters public static Collection data() { return Arrays.asList(new Object[][]{ {"Abcd5", true}, {"x12345", true}, {"&123", false}, {"Inv@lido", false} }); }
public ParameterizedTestCase2( String param, boolean expected) { this.param = param; this.result = expected; }
@Test public void validate() { boolean obtained = id.validateIdentifier(param); Assert.assertEquals(result, obtained); }
} </source>
Finally, a JUnit test suite to run them all:
<source lang="java"> package identifier;
import org.junit.runner.RunWith; import org.junit.runners.Suite;
@RunWith(Suite.class) @Suite.SuiteClasses({
IdentifierTestCase.class, IdentifierParameterizedTestCase.class
})
public class AllTests { } </source>