這幾天在改權限機制的 Java 元件,同時為了測試執行結果是否一如預期都必須寫 JUnit 測試程式碼。
話說,為了檢測這個元件對使用者的異動是否正常,所以有了以下的測試程式碼:
public void testGetUser() { // 先移掉所有使用者記錄
acl.removeUser( "Keroro" );
acl.removeUser( "Kururu" );
acl.removeUser( "Giroro" );
acl.removeUser( "Dororo" );
acl.removeUser( "Tamama" ); // 把所有使用者加進去吧!
assertTrue( "無法新增使用者 Keroro!", acl.addUser( "Keroro", "軍曹", "Keroro 小隊" ));
assertTrue( "無法新增使用者 Kururu!", acl.addUser( "Kururu", "曹長", "Keroro 小隊" ));
assertTrue( "無法新增使用者 Giroro!", acl.addUser( "Giroro", "伍長", "Keroro 小隊" ));
assertTrue( "無法新增使用者 Dororo!", acl.addUser( "Dororo", "兵長", "Keroro 小隊" ));
assertTrue( "無法新增使用者 Tamama!", acl.addUser( "Tamama", "二等兵", "Keroro 小隊" )); // 必須要有 5 個使用者喔!
Properties[] prop = acl.getUsers();
assertEquals( "使用者設定數不為 5 !", 5, prop.length );
System.out.println( "=======================" ); // 把所有使用者內容印出來!
for( int i = 0; i < prop.length; i++ ) {
System.out.println( "名稱:" + prop[i].getProperty( "Name" ));
System.out.println( "階級:" + prop[i].getProperty( "Description" ) );
System.out.println( "所屬小隊:" + prop[i].getProperty( "Resource" ));
System.out.println( "----------------------" );
} // 測試移除所有使用者後之傳回狀況
acl.removeUser( "Keroro" );
acl.removeUser( "Kururu" );
acl.removeUser( "Giroro" );
acl.removeUser( "Dororo" );
acl.removeUser( "Tamama" ); // 再檢查所有使用是否都已全部移除!
assertNull( "未全數移除使用者資訊!", acl.getUsers() );
}
然後還有這一段程式碼跑出來:
public void testGetPermissionList() { // 新增使用者 Keroro
acl.addUser( "Keroro", "軍曹", "Keroro 小隊" ); // 加上使用權限
assertTrue( "無法新增 Keroro 使用者權限 - 鋼普拉組裝術!", acl.addPermission( "Keroro", "鋼普拉組裝術" ));
assertTrue( "無法新增 Keroro 使用者權限 - Kero Ball 借出許可(限日向冬樹專屬)!", acl.addPermission( "Keroro", "Kero Ball 借出許可", null, "日向冬樹" ));
assertTrue( "無法新增 Keroro 使用者權限 - 吸收君(限日向家專用)", acl.addPermission( "Keroro", "吸收君", null, "日向家" ));
assertTrue( "無法新增 Keroro 使用者權限 - 食用宇宙即食丸子", acl.addPermission( "Keroro", "食用宇宙即食丸子" )); // 讀取設定權限
Properties[] prop = acl.getPermissionList( "Keroro" );
assertEquals( "Keroro 使用權限不為 4!", 4, prop.length ); // 逐一列出權限內容
System.out.println( "=======================" );
for( int i = 0; i < prop.length; i++ ) {
System.out.println( "功能名稱:" + prop[i].getProperty( "Name" ));
System.out.println( "功能說明:" + prop[i].getProperty( "Description" ) );
System.out.println( "使用限制:" + prop[i].getProperty( "Resource" ));
System.out.println( "----------------------" );
} // 移除所有權限
assertTrue( "無法移除 Keroro 使用者權限 - 鋼普拉組裝術!", acl.removePermission( "Keroro", "鋼普拉組裝術" ));
assertTrue( "無法移除 Keroro 使用者權限 - 食用宇宙即食丸子", acl.removePermission( "Keroro", "食用宇宙即食丸子" ));
assertTrue( "無法移除 Keroro 使用者權限 - Kero Ball 借出許可(限日向冬樹專屬)!", acl.removePermission( "Keroro", "Kero Ball 借出許可", "日向冬樹" ));
assertTrue( "無法移除 Keroro 使用者權限 - 吸收君(限日向家專用)!", acl.removePermission( "Keroro", "吸收君", "日向家" )); // 測試是否還有其他權限設定
assertNull( "未全數移除使用者 Keroro 之權限!", acl.getPermissionList( "Keroro" )); // 消失吧!Keroror
acl.removeUser( "Keroro" );
}
我發誓,我真的不是故意請 Keroro 來當測試協力的!真的,相信我!
不過話說回來,欠缺的使用者權限驗證的測試協力還是請 Keroro 來幫忙好了!