如何使用Mockito和JUnit测试静态类转换?

问题描述 投票:-1回答:2

我正在测试一个返回对象类型的方法,但是现在我得到了一个java.lang.ClassCastException。

我已经使用模拟对象和实例对象进行了测试,但我得到了相同的结果。

在实现中,我有Employee类从User类扩展。

在EmployeeDelegate类中测试的方法:

    public Employee getEmployeeByUsername(String username){
        User user = userService.getUser(username);      
        return (Employee) user;
    }

单元测试:

    @Test
    public void testGetEmployeeByUsername() {
       User user = new User();      
       String username = "johnDoe";             
       Mockito.when(userDelegate.getUser(any(String.class))).thenReturn(user);    
       Employee response = employeeDelegate.getEmployeeByUsername(username);    
    }

我也试过

User user = Mockito.mock(User.class)

但仍然行不通

我希望静态转换正常工作。

java junit mockito powermock
2个回答
1
投票

FrontOfficeEmployeeUser,但User不一定是FrontOfficeEmployee

你的代表应该返回一个新的FrontOfficeEmployee实例,而不是一个新的User


0
投票

我修复它做下一件事:

我将方法实现更改如下:

public Employee getEmployeeByUsername(String username){
    return (Employee) userService.getUser(username);                
}

然后,单元测试用例的工作原理如下:

@Test
public void testGetEmployeeByUsername(){           
    String username = "daegalle";               
    Employee user = Mockito.mock(Employee.class);
    Mockito.when((Employee) userService.getUser(username)).thenReturn(user);    

    Employee response = employeeDelegate.getEmployeeByUsername(username);  

    Assert.assertEquals(user, response);
}
© www.soinside.com 2019 - 2024. All rights reserved.