Java 我可以为具有相同名称但不同方法签名的方法创建一个通用模拟吗?

Java 我可以为具有相同名称但不同方法签名的方法创建一个通用模拟吗?,java,junit,mockito,powermockito,Java,Junit,Mockito,Powermockito,假设我有一个类UserDAO(),它有多个名为findUser()的方法。但是,这个findUser()方法被多次重载,并且在所有实例中都返回一个用户对象 例如: public class UserDAO { public User findUser(int param1) { *do stuff to create a user object* return User; } public User findUser(int param

假设我有一个类UserDAO(),它有多个名为findUser()的方法。但是,这个findUser()方法被多次重载,并且在所有实例中都返回一个用户对象

例如:

public class UserDAO {

    public User findUser(int param1) {
        *do stuff to create a user object*
        return User;
    }

    public User findUser(int param1, long param2) {
        *do stuff to create a user object*
        return User;
    }

    public User findUser(long param2) {
        *do stuff to create a user object*
        return User;
    }
}
假设我希望这个类在测试其他类时返回一些通用的用户对象。所以我想要这样的东西:

@Test
public void testSomething() {

    User mockedUser = mock(User.class);
    UserDAO mockedUserDAO = mock(UserDAO.class);

    when(mockedUserDAO.findUser(*any parameter*)).thenReturn(mockedUser);
}
本质上,我不想单独模拟每个findUser()方法。有没有办法做到这一点


看起来,接受的答案可能会提供一个提示,但我很难理解最黑客的解决方案,因为我在编码方面是个新手。

“本质上,我不想单独模拟每个findUser()方法。”-对于每个测试,您应该只模拟您需要的。您是否需要在一个测试中实现所有功能?如果是这样的话:所有调用是否真的返回相同的
用户
?另外:这个问题与
powermockito
有什么关系?因此有两个问题导致了这个问题:1。有人告诉我,我只想在数据库级别模拟对象。2.代码库足够大,并且相互关联,因此每个新的测试类都可能有150行导入和模拟,以便在基本级别上运行。我正在尝试创建一个类,该类将为您需要的所有基本模拟设置提供服务,这样您就不必为每个新文件的每个新JUnit测试类重复这150行代码。有时用户对象并不重要。在这种情况下,用户可以在需要时指定行为。该问题可能与powermockito无关。我一周前才开始用这个。但是我使用mockito和powermockito来模拟这些类,我知道它们都添加了一些模拟功能。因此,如果Mockito不支持,Powermockito也许可以启用我正在尝试的操作。“本质上,我不想单独模拟每个findUser()方法。”-对于每个测试,您应该只模拟您需要的。您是否需要在一个测试中实现所有功能?如果是这样的话:所有调用是否真的返回相同的
用户
?另外:这个问题与
powermockito
有什么关系?因此有两个问题导致了这个问题:1。有人告诉我,我只想在数据库级别模拟对象。2.代码库足够大,并且相互关联,因此每个新的测试类都可能有150行导入和模拟,以便在基本级别上运行。我正在尝试创建一个类,该类将为您需要的所有基本模拟设置提供服务,这样您就不必为每个新文件的每个新JUnit测试类重复这150行代码。有时用户对象并不重要。在这种情况下,用户可以在需要时指定行为。该问题可能与powermockito无关。我一周前才开始用这个。但是我使用mockito和powermockito来模拟这些类,我知道它们都添加了一些模拟功能。所以,如果Mockito没有,Powermockito也许可以启用我正在尝试的功能。