Jmockit:错误调用1

时间:2017-05-13 23:48:26

标签: java unit-testing junit dependencies jmockit

我必须测试一个UserAdmin类,它依赖于数据库类。我已经模拟了数据库类来测试UserAdmin类。数据库类有一个方法isAdmin(),它决定用户是否是管理员。 UserAdmin类有一个名为removeUser()的方法,我收到此错误。如果用户是Admin,则removeUser()方法不允许删除用户 以下是我看到此错误的代码。

@Test
    //testing remove user method of UserAdmin - remove Admin
        public void testremoveUserAdmin() throws SQLException{
            new Expectations() {{

                dBConnection.isAdmin("admin");
                times=1;
                result = true;

            }};             
         assertEquals(false,userAdmin.removeUser("admin"));

当我提出上述断言时,它会给出一个缺少的调用错误但是当我在断言中将false替换为true时,它表示预期为真但它是错误的。我不知道为什么我会收到此错误。类似于isAdmin()的方法运行的类似代码运行正常。请帮忙

2 个答案:

答案 0 :(得分:1)

对我来说很好:

public class UserAdminTest {
    static class DBConnection { boolean isAdmin(String userName) { return false; } }

    static class UserAdmin {
        boolean removeUser(String userName) {
            DBConnection dbConnection = new DBConnection();

            if (!dbConnection.isAdmin(userName)) {
                // remove user
                return true;
            }

            return false;
        }
    }

    @Tested UserAdmin userAdmin;
    @Mocked DBConnection dBConnection;

    @Test
    public void doesNotRemoveUserWhenAdmin() throws Exception {
        new Expectations() {{ dBConnection.isAdmin("admin"); result = true; }};

        boolean removedIt = userAdmin.removeUser("admin");

        assertFalse(removedIt);
    }
}

答案 1 :(得分:0)

在isAdmin方法之前应该调用另一种方法。在isAdmin方法之前调用它解决了这个问题。