我使用过JUnit和Mocks,但我想知道,JUnit中的Mock和Stub有什么区别,以及如何在JUnit、Java中使用Stub?而Mocks有EasyMock、Mockito等,Stubs在Java中有什么用呢?请给出一些Javastub的示例代码。 最佳答案 在我看来,框架或技术无关紧要。模拟和stub可以定义如下。stub是系统中现有依赖项(或协作者)的可控替代品。通过使用stub,您可以在不直接处理依赖项的情况下测试您的代码。模拟对象是系统中决定单元测试通过或失败的假对象。它通过验证被测对象是否按预期与假对象进行交互来实
如果有一种方法可以在javadoc中放置一个指向驻留在src/main/resources或src/test/resources中的标准资源文件的链接,以便其他编码人员可以快速导航到资源文件,我会发现它非常有用(在本例中为JSON文件)在IntelliJ中。这些文件用于单元测试,需要随着架构的变化而经常修改。答案在这里Linktotextfile(resource)inJavadoc没有帮助,因为绝对路径太脆弱了。有没有办法用资源做与@see相同的事情?如果javadoc本身有不足之处,IntelliJ特有的东西会很棒。 最佳答案
我有一个添加关闭钩子(Hook)的方法。我需要测试(通过JUnit)钩子(Hook)中执行的代码是否被调用:publicvoidmyMethod(){Runtime.getRuntime().addShutdownHook(newThread(){@Overridepublicvoidrun(){...codetotest...}});}如何在单元测试中模拟关机? 最佳答案 我认为您无法测试它。相反,只需测试您的代码在调用时是否正确运行(通过单独对其进行单元测试)。然后,相信Java会在正确的时间调用您的代码。即将代码提取到扩展Th
我正在设置持续集成服务器(Hudson)来构建Java项目并运行相关的单元/集成测试。大多数这些测试访问数据库,测试数据保存在DbUnitXML文件中。我正在寻找一种自动使测试数据库架构保持最新的方法。目前,特定版本的SQL脚本存储在以版本命名的目录中:└───scripts├───0.1.0├───0.1.1├───0.1.2├───0.1.4例如0.1.4版本的SQL脚本为scripts\0.1.4\script-0.1.4.sql问题是这些脚本混合了模式更改(例如ALTERTABLE...)和对静态表的更改(例如向USER_TYPE表添加新角色)。在单元测试的情况下,我只想应用模
假设我有一个模拟对象,我不想stub它的任何方法,但我想stub它返回的对象的方法。例如,when(mockObject.method1()).thenReturn(returnValue)这是通常的做法,但我正在寻找,when(mockObject.method1().method2()).thenReturn(returnValue)这可能吗?如果我这样做,我会得到一个NullPointerException。目前我stub第一个方法来返回模拟对象,然后使用返回的模拟对象stub第二个方法。但是,这些临时模拟对象对我来说毫无用处,在将许多方法链接在一起之后,会产生很多无用的模拟对象
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭6年前。Improvethisquestion我有在jUnit中检查异常的代码。我想知道以下哪一项是良好的jUnit实践?首先@RulepublicExpectedExceptionexception=ExpectedException.none();@TestpublicvoidcheckNullObject()throwsCustomException{exception.expect(CustomException.class)
我通过右键单击Java类并选择新建JUnit测试用例,在Eclipse中创建了一个JUnit4测试。当我右键单击测试类时,我得到“在服务器上运行”,但不是“作为JUnit测试运行”。我正在使用Eclipse3.6.1。 最佳答案 在我的例子中,Eclipse一定已经达到损坏状态。重新启动Eclipse解决了问题。 关于java-缺少"RunasJUnitTest",我们在StackOverflow上找到一个类似的问题: https://stackoverflo
我在多模块项目中使用test-jar依赖项时遇到问题。例如,当我像这样声明cleartk-syntax模块依赖于cleartk-token模块的test-jar时(完整代码是here):4.0.0org.cleartkcleartk-syntax0.5.0-SNAPSHOTcleartk-syntax......org.cleartkcleartk-token0.7.0-SNAPSHOTtest-jartest如果我使用maven2运行mvncompile,我会收到以下错误:[INFO]--------------------------------------------------
我并不完全清楚如何最好地使用MavenFailsafe插件进行集成测试。我的用例是针对本地MySQL数据库测试SQL查询。据我所知,数据库应该在pre-integration-test阶段启动,并在post-integration-test阶段关闭。但是我该如何指定呢?我应该在我的pom.xml中放入命令行吗?或者我应该使用特定注释来注释的方法? 最佳答案 在常规built-inmavenlifecycles(jar,war...)pre-integration-test和post-integration-test测试阶段未绑定(b
如果我模拟一个方法来返回某个对象的新实例,我如何捕获返回的实例?例如:when(mock.someMethod(anyString())).thenAnswer(newAnswer(){Objectanswer(InvocationOnMockinvocation){Object[]args=invocation.getArguments();Objectmock=invocation.getMock();returnnewFoo(args[0])}});显然,我可以有一个Foo类型的字段,并在answer中将其设置为新实例,但是有更好的方法吗?像ArgumentCaptor这样的东西