для начала public class JUnitTest {
@BeforeClass public static void beforeClass() {}
@Before public void before() {}
@Test public void test1() { }
@Test public void test2() { }
@Test public void test3() { }
@AfterClass public static void afterClass() { }
@After public void after() { }
}
// Последовательность вызовов методов
JUnitTest.beforeClass();
JUnitTest test1 = new JUnitTest();
test1.before();
test1.test1();
test1.after();
JUnitTest test2 = new JUnitTest();
test2.before();
test2.test2();
test2.after();
JUnitTest test3 = new JUnitTest();
test3.before();
test3.test3();
test3.after();
JUnitTest.afterClass();
т.е. под каждый метод помеченный как @Test будет
вызываться из отдельно созданного класса, таким образом достигается изоляция между тестами. Потому у вас в втором тесте a == null.
если нужно, чтоб шарился объект между тестами, нужно создать его как статическое поле.
и по моему, тесты в пределах одного класса вызываются последовательно