<dependency> <groupId>org.mockito</groupId> <artifactId>mockito-core</artifactId> <version>2.21.0</version> <scope>test</scope> </dependency>
import org.junit.Rule; import org.junit.Test; import org.mockito.InOrder; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.MockitoJUnit; import org.mockito.junit.MockitoRule; import java.util.Arrays; import static org.mockito.Mockito.*; public class ExampleTest { @Rule public MockitoRule rule = MockitoJUnit.rule(); @Mock private ArticleCalculator mockCalculator; @Mock private ArticleDatabase mockDatabase; @InjectMocks private ArticleManager articleManager; @Test public void managerCountsArticlesAndSavesThemInTheDatabase() { when(mockCalculator.countArticles("Guardian")).thenReturn(12); when(mockCalculator.countArticlesInPolish(anyString())).thenReturn(5); articleManager.updateArticleCounters("Guardian"); verify(mockDatabase).updateNumberOfArticles("Guardian", 12); verify(mockDatabase).updateNumberOfPolishArticles("Guardian", 5); verify(mockDatabase).updateNumberOfEnglishArticles("Guardian", 7); } @Test public void managerCountsArticlesUsingCalculator() { articleManager.updateArticleCounters("Guardian"); verify(mockCalculator).countArticles("Guardian"); verify(mockCalculator).countArticlesInPolish("Guardian"); } @Test public void managerSavesArticlesInTheDatabase() { articleManager.updateArticleCounters("Guardian"); verify(mockDatabase).updateNumberOfArticles("Guardian", 0); verify(mockDatabase).updateNumberOfPolishArticles("Guardian", 0); verify(mockDatabase).updateNumberOfEnglishArticles("Guardian", 0); } @Test public void managerUpdatesNumberOfRelatedArticles() { Article articleOne = new Article(); Article articleTwo = new Article(); Article articleThree = new Article(); when(mockCalculator.countNumberOfRelatedArticles(articleOne)).thenReturn(1); when(mockCalculator.countNumberOfRelatedArticles(articleTwo)).thenReturn(12); when(mockCalculator.countNumberOfRelatedArticles(articleThree)).thenReturn(0); when(mockDatabase.getArticlesFor("Guardian")).thenReturn(Arrays.asList(articleOne, articleTwo, articleThree)); articleManager.updateRelatedArticlesCounters("Guardian"); verify(mockDatabase).save(articleOne); verify(mockDatabase).save(articleTwo); verify(mockDatabase).save(articleThree); } @Test public void shouldPersistRecalculatedArticle() { Article articleOne = new Article(); Article articleTwo = new Article(); when(mockCalculator.countNumberOfRelatedArticles(articleOne)).thenReturn(1); when(mockCalculator.countNumberOfRelatedArticles(articleTwo)).thenReturn(12); when(mockDatabase.getArticlesFor("Guardian")).thenReturn(Arrays.asList(articleOne, articleTwo)); articleManager.updateRelatedArticlesCounters("Guardian"); InOrder inOrder = inOrder(mockDatabase, mockCalculator); inOrder.verify(mockCalculator).countNumberOfRelatedArticles((Article) anyObject()); inOrder.verify(mockDatabase, atLeastOnce()).save((Article) anyObject()); } }
<dependency> <groupId>org.easymock</groupId> <artifactId>easymock</artifactId> <version>3.6</version> <scope>test</scope> </dependency>
import static org.easymock.EasyMock.*; import org.easymock.*; import org.junit.*; public class ExampleTest extends EasyMockSupport { @Rule public EasyMockRule rule = new EasyMockRule(this); @Mock private Collaborator collaborator; // 1 @TestSubject private ClassTested classUnderTest = new ClassTested(); // 2 @Test public void addDocument() { collaborator.documentAdded("New Document"); // 3 replayAll(); // 4 classUnderTest.addDocument("New Document", "content"); // 5 verifyAll(); // 6 } }
- Create the mock
- Have it set to the tested class
- Record what we expect the mock to do
- Tell all mocks we are now doing the actual testing
- Test
- Make sure everything that was supposed to be called was called
PowerMock is a framework that extend other mock libraries such as EasyMock with more powerful capabilities. PowerMock uses a custom classloader and bytecode manipulation to enable mocking of static methods, constructors, final classes and methods, private methods, removal of static initializers and more. By using a custom classloader no changes need to be done to the IDE or continuous integration servers which simplifies adoption. Developers familiar with the supported mock frameworks will find PowerMock easy to use, since the entire expectation API is the same, both for static methods and constructors. PowerMock aims to extend the existing API's with a small number of methods and annotations to enable the extra features. Currently PowerMock supports EasyMock and Mockito.
相关推荐
"基于Java探针的Mock框架"可能是指一种结合了这两种技术的工具,它可能是为了提供更高级别的测试控制和深入的程序分析。 首先,我们来理解Java探针(Java Profiler)。Java探针通常包含以下功能: 1. **性能分析**...
深入学习Java单元测试(Junit+Mock+代码覆盖率) Java单元测试是软件测试的一种,旨在验证软件的正确性和可靠性。单元测试是编写测试代码,用来检测特定的、明确的、细颗粒的功能。单元测试并不一定保证程序功能是...
而Mockito则是Java领域中一款强大的模拟(mocking)工具,它允许我们在测试时隔离被测代码,避免依赖其他外部系统或组件的影响。本主题将深入探讨如何在JUnit4中结合Mockito进行单元测试。 一、JUnit4简介 JUnit4是...
redis-mock-java 用纯Java编写的与内存Redis兼容的实现。 。地位安装专家< dependency> < groupId>org.rarefiedredis.redis</ groupId> < artifactId>redis-java</ artifactId> < version>0.0.5</ version></ ...
在Java编程语言的学习过程中,`Mock.java.zip`这个压缩包显然包含了与Mocking相关的学习资料,特别是关于如何在Java中进行单元测试时模拟对象(Mock Objects)的技术。Mock Objects是测试驱动开发(TDD)和行为驱动...
在IT行业中,Mock工具有很多,比如Java中的Mockito、JMock,Python的unittest.mock库,JavaScript的Sinon.js等。这些工具提供了方便的方法来创建和管理Mock对象,使测试过程更加便捷。例如,Mockito允许开发者通过...
Java单元测试增强工具源码,换种思路写Mock,让单元测试更简单 构建项目 主项目使用JDK 1.6+和Maven 3+版本构建,其中demo子项目需要JDK 1.8+版本。 mvn clean install 本地生成文档 docsify serve docs ...
MockServer 是一个强大的工具,主要用于在开发过程中模拟服务器行为,特别是在接口开发和测试阶段。它允许开发者在没有实际后端服务的情况下,创建模拟的HTTP和HTTPS服务器,以便于快速验证前端代码或者自动化测试。...
Mock方法则是单元测试中的一个重要工具,用于模拟复杂系统中的依赖关系,以便孤立地测试目标代码。在本篇文章中,我们将深入探讨单元测试与Mock方法的相关知识点。 首先,让我们理解单元测试的基本概念。单元测试是...
提供了Mock数据的模块化管理,接口的定义和测试(支持JSON5/XML文档格式、Mock.js的语法规则),Mock数据的操作日志,以及接口的Mock服务功能。另外,提供了开发中常用的工具,还收藏了一些工具类的网站。
在软件开发中,尤其是在测试阶段,MockServer可以替代真实的后端服务,允许开发者在没有实际依赖的情况下进行单元测试和集成测试。这个“mockserver1.zip”文件包含了启动和使用MockServer所需的一些基本组件和配置...
在Struts2中,有多种方式来实现Mock测试: 1. `junit怎么测试struts里的Action.htm`:这个文件名暗示了如何使用JUnit进行Struts2 Action的测试。JUnit是Java开发中最常用的单元测试框架,可以配合Mockito或EasyMock...
在java web应用中,进行用例实现时,很多情况难以模拟,比如数据库用例,如果直接通过连接数据库进行测试,导致用例对环境依赖很大,这时,可以通过mock技术可以模拟构造数据环境,从而进行单元测试,这里提供有实现...
Mock是一个强大的服务端模拟工具,它的核心特性是零侵入性,这意味着在你的实际项目代码中无需进行任何修改,即可实现服务的模拟。这极大地提高了开发效率,特别是在进行集成测试或者依赖于其他服务但又无法实时访问...
对于“支持http接口自由mock,可根据需要进行接口mock测试”这一主题,我们可以深入探讨一下HTTP接口Mocking的概念、重要性以及如何使用工具如Moco进行实践。 HTTP接口Mocking是软件开发过程中的一个重要环节,特别...
JUnit是Java程序员用来进行单元测试的首选工具。它的主要目标是提供一个简单易用的接口,帮助开发者快速编写和执行测试用例,确保代码按照预期工作。JUnit支持注解(annotations),这使得测试代码更加简洁且易于...
文档“java单元测试培训提纲.doc”可能涵盖了以上各个知识点的详细讲解,而“JAVA单元测试工具比较.doc”可能对不同测试工具进行了深入的对比分析,包括它们的优缺点、适用场景等。 理解并熟练运用这些Java单元测试...