Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Mockito,如何存根一个返回类型为void的方法,该方法在传递某个参数时抛出异常?_Java_Unit Testing_Junit_Mockito - Fatal编程技术网

Java 使用Mockito,如何存根一个返回类型为void的方法,该方法在传递某个参数时抛出异常?

Java 使用Mockito,如何存根一个返回类型为void的方法,该方法在传递某个参数时抛出异常?,java,unit-testing,junit,mockito,Java,Unit Testing,Junit,Mockito,以下是主要的Mockito文档。但是,Mockito文档中的示例保留了一个无参数的方法如果该方法有参数,并且如果该a参数不符合约定,该方法将抛出异常,该怎么办 所以对于下一节课 public class UserAccountManager { /** * @throws Exception if user with provided username already exists */ public void createAccount(User user

以下是主要的Mockito文档。但是,Mockito文档中的示例保留了一个无参数的方法如果该方法有参数,并且如果该a参数不符合约定,该方法将抛出异常,该怎么办

所以对于下一节课

public class UserAccountManager {    
   /**
    * @throws Exception if user with provided username already exists
    */
    public void createAccount(User user) throws Exception {
        // db access code ...
    }
}
。。。如果某个用户对象被作为参数传递给该方法,那么如何使用Mockito对UserAccountManager.createAccount进行模拟,使其抛出异常

但是,对于使用参数和异常来存根void方法,请执行以下操作:

由于CreateCount的返回类型为void,因此必须使用:


注意Matcher的用法。如果参数的类型(在本例中为用户)本身没有实现等于,您也可以尝试使用Matcher。

这一个如何:?@gontard拜托,您链接到的q/a甚至不能远程回答此问题的主题!对,可能以前没有这个问题,因为它是完全明显的。在阅读第5节(存根无效方法和异常)之前,你应该阅读第3节(参数匹配器)Kandilaki,如果你觉得Mockito的文档不充分,那么更好的做法可能是联系Mockito团队,所以他们可以改进它。你有没有想过在Mockito谷歌集团发帖?你能给我一些提示吗
User existingUser = ... // Construct a user which is supposed to exist
UserAccountManager accountMng = mock(UserAccountManager.class);    

doThrow(new Exception()).when(accountMng).createAccount(eq(existingUser));