JMockit实例
package test.mock.jmockit; import static org.junit.Assert.assertEquals; import mockit.Deencapsulation; import mockit.Expectations; import mockit.Injectable; import mockit.Mock; import mockit.MockUp; import mockit.Mocked; import mockit.Tested; import org.junit.Test; public class TestJMockit { /** * mock代理dao方法 */ @Test public void result(){ //1. mock对象【mock一个dao并设置其某个方法的期望返回值】 MockUp<Dao> mockUp = new MockUp<Dao>() { @Mock public int getCount(){//设置dao里面的方法,下面的调用就会调用本方法 return 70; } }; //2. 获取mock实例 Dao dao = mockUp.getMockInstance(); Service service = new Service(); service.setDao(dao); //3. 调用 String sign = service.getCount(); System.out.println("测试结果:"+sign); assertEquals("良好", sign); //4. 还原对象,避免测试方法之间互相影响。其实对一个实例来说没什么影响,对静态方法影响较大。旧版本的tearDown()方法是Mockit类的静态方法 mockUp.tearDown();//dao为null,不可用了 // String sign2 = service.checkCount(); // System.out.println("====="+sign2); } /** * 测试方法入参直接被mock * @param dao */ @Test public void param(@Mocked final Dao dao){ new Expectations() { { dao.getCount(); result = 66; times = 1; } }; Service service = new Service(); service.setDao(dao); String sign = service.getCount(); System.out.println("测试结果:"+sign); } @Test public void privateMethod() { new Expectations(Service.class) { { Deencapsulation.invoke(Service.class, "hello");//invoke能调用私有方法 // returns(16); result = 16; // times = 1; } }; int age = Service.test(); System.out.println("测试结果:"+age); } //================================ @Tested //自动构建,无需new,自动构建和注入实例 Service serviceAI; @Injectable //自动构建并注入到@Tested实例中,并且自动会被mock Dao daoAI; /** * 自动注入:dao、service */ @Test public void autoInject(){ new Expectations() {//设置dao返回结果 { daoAI.getCount(); result = 89; } }; String sign = serviceAI.getCount(); System.out.println("测试结果:"+sign); } }
package test.mock.jmockit; public class Service { Dao dao; public static int test(){ return hello(); } public int getStudentAge(){ return getAge(); } private static int hello(){ int age = 13; System.out.println("查询学生年龄为:"+age); return age; } private static int getAge(){ int age = 13; System.out.println("查询学生年龄为:"+age); return age; } /** * 计算学生得分等级 * @return */ public String getCount(){ int count = dao.getCount(); String sign = "不及格"; if(count < 60){ System.out.println("不及格:"+count); }else if(count < 90){ System.out.println("良好:"+count); sign = "良好"; }else{ System.out.println("优秀:"+count); sign = "优秀"; } return sign; } public Dao getDao() { return dao; } public void setDao(Dao dao) { this.dao = dao; } }
package test.mock.jmockit; public interface Dao { int getCount(); int getAge(); }
相关推荐
Java测试是确保代码质量、提高软件可靠性的重要环节,它通过自动化的方式验证程序的功能是否按预期工作,以及在各种情况下是否能够正确处理异常。 在Java中,JUnit是最常用的单元测试框架,它提供了断言方法来判断...
JMockit是一款强大的Java测试工具,它主要用于模拟和测试Java代码中的依赖,特别是在进行单元测试时。这款开源库使得开发者可以更容易地创建测试桩(stubs)和模拟对象(mocks),无需修改被测试代码,甚至在无法...
JMockit是一个流行的Java测试工具,它主要用于模拟和断言对象的行为,特别是在进行单元测试时。这个工具使得开发者能够在不修改源代码的情况下,对复杂的依赖关系进行模拟,从而简化测试过程。下面将详细介绍JMockit...
通过熟练掌握Jmockit,你可以编写出更加健壮和可维护的单元测试,确保代码的质量和稳定性。在实际项目中,Jmockit可以帮助你有效地隔离被测试代码,减少对真实环境的依赖,提高测试效率,让单元测试变得更加简单高效...
本文将详细介绍10款常用的Java测试工具,帮助开发者更好地了解和选择适合自己的测试工具。 1. JUnit:JUnit是最基础也是最广泛的Java单元测试框架,它支持注解、断言、异常测试等多种功能,使得编写测试用例变得...
JMockit 是一款 Java 语言的测试框架,主要用于模拟(mocking)和验证对象的行为,以便在单元测试中隔离被测试代码。它支持行为和状态的测试,这使得测试更加灵活和全面。以下是对 JMockit 的关键知识点的详细解释:...
JMockit Coverage,作为一款强大的Java测试覆盖率工具,它能帮助开发者了解代码被测试的程度,从而提升测试的有效性。本文将深入探讨JMockit Coverage的原理、使用方法及其在实际项目中的应用。 首先,JMockit ...
JUnit作为Java领域广泛使用的单元测试框架,极大地简化了测试工作。然而,对于一些特殊场景,如测试私有方法或者模拟依赖对象,JUnit的标准功能可能就显得力不从心了。这时,我们就需要引入第三方库来增强测试能力,...
JMockit是一款强大的Java测试工具,它允许开发者在单元测试中模拟任何Java代码,包括静态方法、构造器、final类和方法以及系统类。这款工具的出现极大地简化了Java应用程序的测试过程,尤其是对于那些难以测试或者有...
《JMockit:一个强大的Java测试工具》 在软件开发领域,测试是不可或缺的一部分,它确保了代码的质量和稳定性。JMockit是一个优秀的Java库,专门用于进行单元测试和模拟对象,尤其在处理复杂的依赖关系时表现突出。...
然后编写使用jmockit的单元测试,通过模拟对象和方法来测试目标代码。 执行Maven的`clean test`命令后,JaCoCo会生成覆盖率数据并生成报告。生成的报告通常位于`target/jacoco`目录下,提供HTML、XML和CSV等多种...
**JMockit 1.2:一款强大的Java测试工具** JMockit是一款广泛使用的Java单元测试框架,尤其在模拟和mocking对象方面表现卓越。它提供了简洁、灵活且高效的API,使得开发者能够在测试代码中轻松地模拟任何Java类或...
JMockit 是一个流行的Java测试框架,用于模拟和验证代码行为,特别是在进行单元测试时。这个"jmockit-1.6.rar"压缩包包含了JMockit 1.6版本的相关资源,允许开发者在他们的项目中引入这个工具来提高测试的质量和效率...
JMockit是一款用于Java应用程序的高级单元测试框架,它提供了丰富的API来帮助开发者创建高质量的单元测试。JMockit的核心能力在于其能够模拟(Mock)和伪装(Stub)Java类中的方法,从而使得开发者能够在隔离环境中...
JMockit是一款强大的Java测试工具,它允许开发者在单元测试中模拟任何类或接口的行为,包括静态方法和构造函数。这个“jmockit使用例子”很可能会涵盖如何利用JMockit进行测试的基本步骤,以及如何改变静态方法的...
Jmockit是一个Java库,主要用于模拟和验证代码的行为,特别是在单元测试中。它提供了强大的API,允许开发者在不修改原有代码的情况下,对类和接口的行为进行模拟,以测试其功能。 在深入理解Jmockit之前,我们需要...
2. **JMockit**:JMockit是一个强大的Java测试框架,支持模拟静态方法、final类和方法,以及非public成员,这使得对不可变对象和依赖于外部系统或资源的类的测试变得可行。 3. **Codahale Metrics**:这个库提供了...
1. **jmockit.jar**:这是一个Java模拟框架,用于单元测试和集成测试。在DDT中,它可以帮助我们模拟复杂的依赖关系,隔离被测试代码,以便专注于测试特定功能,而不受其他部分的影响。我们可以为不同的数据输入创建...