JUnit test squence dilemma

Reading Time: 2 minutes

At work I was writing test cases for methods for a dao class. Suddenly I realized that the test methods do not work the in the sequence that I wrote them, eventually one test case has failed because deletion method is being conducted before the creation method. Then I’ve checked it online and after JUnit 4.11 there is a new annotation called @FixMethodOrder and this annotation takes a parameter from such list and I’ve implemented MethodSorters.NAME_ASCENDING to have the method be conducted by name.

So by now my problem was not solved, and yet I’ve had to alter my methods names with a such prefix stage1_ETC, stage2_ETC so this way I name the one which I want to be conducted in the name order. The below I’m sharing a sample code snipped for you to study

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:*applicationContext-test.xml")
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class BusinessObjectsDAOTest {

	
	final String testUserName = "TESTTESTTEST";
	final String testUserNameLastName = "TEST";
	final String testUserEmail = "TEST@TESTDOMAIN.COM";
	final String authGroup1 = "GRP_PAL_VIEW_ON_DEMAND";
	final String authGroup2 = "GRP_PAL_VIEW_ON_DEMAND_SAVE_AS";
	final String authGroup3 = "GRP_PAL_POWER_USER";
	final String authGroup4 = "GRP_PAL_POWER_USER_SAVE_AS";
	
	@Autowired
	BusinessObjectsService boService;

	@Before
	public void setUp() throws Exception {
		boService.beginEnterpriseSession("USERNAME", "PASSWORD",
				"SERVERADDR");
	}

	@After
	public void tearDown() throws Exception {
		boService.terminateEnterpriseSession();
	}

	@Test
	public void stage01_CheckUserExistenceTrueCase() {
		assertEquals(true, boService.checkUserExistence("90003327"));
	}

	@Test
	public void stage02_CheckUserExistenceFalseCase() {
		assertEquals(false,
				boService.checkUserExistence("THISUSERDOESNOTEXIST"));
	}

	@Test
	public void stage03_CollectAuthorizationGroupsAmountTest() {
		List<String> list = boService.collectAuthorizationGroups();
		assertEquals(4, list.size());
	}

	@Test
	public void stage04_CollectAuthorizationGroupsDataTest() {
		List<String> list = boService.collectAuthorizationGroups();
		List<String> manualList = new ArrayList<String>();
		manualList.add(authGroup1);
		manualList.add(authGroup2);
		manualList.add(authGroup3);
		manualList.add(authGroup4);
		
		Collections.sort(list);
		Collections.sort(manualList);
		
		assertEquals(manualList, list);
	}
	
	@Test
	public void stage05_CreateUser(){
		boService.createUser(testUserName, testUserNameLastName, testUserNameLastName, testUserEmail);
		boolean userExistence = boService.checkUserExistence(testUserName);
		assertEquals(true, userExistence);
	}
	
	
	@Test
	public void stage06_getUserInfo(){
		String[] userData = boService.getUserInfo(testUserName);
		String[] userDataManual = {testUserNameLastName + " " + testUserNameLastName, testUserEmail};
		assertArrayEquals(userDataManual, userData);
	}
	
	@Test
	public void stage07_JoinUserToAuthGroupToGRP_PAL_VIEW_ON_DEMAND(){
		boService.joinUserToAuthGroup(testUserName, "GRP_PAL_VIEW_ON_DEMAND");
		assertTrue(boService.acquireUserAuthGroup(testUserName).equals(authGroup1));
	}
	
	@Test
	public void stage08_RemoveUserFromAuthGroupToGRP_PAL_VIEW_ON_DEMAND(){
		boService.removeUserFromGroup(testUserName, "GRP_PAL_VIEW_ON_DEMAND");
		assertFalse(boService.isUserInGroup(testUserName, authGroup1));
	}
	
	@Test
	public void stage09_JoinUserToAuthGroupToGRP_PAL_VIEW_ON_DEMAND_SAVE_AS(){
		boService.joinUserToAuthGroup(testUserName, "GRP_PAL_VIEW_ON_DEMAND_SAVE_AS");
		assertTrue(boService.acquireUserAuthGroup(testUserName).equals(authGroup2));
	}
	
	@Test
	public void stage10_RemoveUserFromAuthGroupToGRP_PAL_VIEW_ON_DEMAND_SAVE_AS(){
		boService.removeUserFromGroup(testUserName, "GRP_PAL_VIEW_ON_DEMAND_SAVE_AS");
		assertFalse(boService.isUserInGroup(testUserName, authGroup2));
	}
	
	@Test
	public void stage11_DeleteUser(){
		boService.deleteUser(testUserName);
		boolean userExistence = boService.checkUserExistence(testUserName);
		assertEquals(false, userExistence);
	}
}

 

Output

junitTestSequenceOutput2