Test Class Template
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricGradleTestRunner;
import org.robolectric.annotation.Config;
import static android.os.Build.VERSION_CODES.LOLLIPOP;
@Config(sdk = LOLLIPOP, constants = BuildConfig.class)
@RunWith(RobolectricGradleTestRunner.class)
public class MyTest {
// something to mock
@Mock TypeA A;
@Spy TypeB B = new TypeB();
// ...
// Set up
@Before public void setUp() throws Exception {
initMocks(this); // create mock objects, ex. A and B above
// ... do so other init things
}
// Tear down
@After public void tearDown() {
// ... do so tear down things
}
// Test Case (which should not throw exception)
@Test public void testCase1() throws Exception {
// do something
}
// Test Case (expect exception)
@Test(expected=YouExceptException.class) public void testException1() {
// something would throw YouExceptException.class exception
}
// Test Case (expect exception)
@Test public void testException2() throws Exception {
try {
// something should throw exception
// import org.assertj.core.api.Assertions;
Assertions.failBecauseExceptionWasNotThrown(YouExpectException.class);
} catch (YouExpectException e) {
}
// verify other things here
}
// Test Case (with timeout)
@Test(timeout=100) public void infinity() {
// something should not run longer than 100ms
}
}