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调用方法_Java_Unit Testing_Junit_Mockito - Fatal编程技术网

Java 如何断言使用mockito调用方法

Java 如何断言使用mockito调用方法,java,unit-testing,junit,mockito,Java,Unit Testing,Junit,Mockito,我想问更多关于测试的概念性问题。我正在使用Mockitos进行单元测试 我有一种方法可以做很多事情。它在内部调用的所有方法都是void方法,而void方法将执行其他一些操作。所讨论的方法可以有例外或无例外地完成。没有编写断言语句的范围,因为它主要调用void方法。此外,我还为这个类的所有其他方法编写了独立的单元测试 我的问题是,如果我需要测试覆盖率,我应该为所有方法编写测试用例。但是,我没有为我的方法之一找到任何有效的断言。从单元测试覆盖率的角度来看,所讨论的方法是一种重要的方法。当我运行测试时

我想问更多关于测试的概念性问题。我正在使用Mockitos进行单元测试

我有一种方法可以做很多事情。它在内部调用的所有方法都是void方法,而void方法将执行其他一些操作。所讨论的方法可以有例外或无例外地完成。没有编写断言语句的范围,因为它主要调用void方法。此外,我还为这个类的所有其他方法编写了独立的单元测试

我的问题是,如果我需要测试覆盖率,我应该为所有方法编写测试用例。但是,我没有为我的方法之一找到任何有效的断言。从单元测试覆盖率的角度来看,所讨论的方法是一种重要的方法。当我运行测试时,我确实在日志中看到这些方法执行得很好,但实际上没有什么可断言的。在这种情况下我该怎么办

1) 让方法保持原样而不进行任何断言?它仍在检查是否一切正常

2) 创建两个方法:一个期望异常(负Testcase)的方法和一个没有断言的常规测试方法。(这基本上表明我已经涵盖了积极和消极的情景)。我在这里仍然没有任何资产


这是正确的方法还是有更好的方法来处理这个问题?

如果您没有任何值得断言的东西,您可以尝试验证

verify(someMock, times(x)).someMethod();

更多关于Mockito验证的信息,请参阅文档:

为什么没有任何东西可以断言?如果你运行你的方法,让A成为宇宙。如果你不运行你的方法,让B成为宇宙。如果A==B,那么停止调用该方法,它没有做任何事情。如果是然后断言他们的不同之处都是正确的


i、 例如,你的方法实际上在做什么?这应该是您测试的一部分。

您说您正在使用Mockito进行测试。您是否正在使用此测试方法调用的对象的模拟?在这种情况下,您可以使用Mockito的
verify()
来验证是否按预期调用了适当的其他方法。然后,您正在验证行为,不需要断言。@nikpon请阅读完整的问题陈述,我说过我已经用此方法调用的断言涵盖了所有方法。+1因为这可能是用户想要的,但是我绝对支持我的评论,我想知道为什么OP没有任何东西可以断言。这个方法就像一个execute方法,它调用所有不同的方法来完成执行。这就是它没有明确做任何事情的原因。这就像holder方法一样。如果所调用的任何方法因某些异常而失败,则此方法将捕获它。这就是为什么我可以通过传递一个允许其他方法失败的值来创建一个负的testcase,从而允许它抛出异常。对于肯定的测试用例,我不确定除了调用verify之外是否还能做其他事情。@Shyna是的,Mockito可以做到。我首先要求您明确地将问题改为“如何断言使用mockito调用方法”。使用mocks+
verify
是正确的做法。如果你仍然被卡住,我可以在你更新你的问题后给出完整的答案(老实说,这可能是一个重复的问题)。@djechiln我会更新它,我只是想检查是否有其他方法。我没有卡住,谢谢!