package com.alipay.morderprod.biz.order.air.impl;
import static org.junit.Assert.assertTrue;
import java.lang.reflect.Field;
import org.jmock.Expectations;
import org.jmock.Mockery;
import org.jmock.integration.junit4.JMock;
import org.jmock.integration.junit4.JUnit4Mockery;
import org.jmock.lib.legacy.ClassImposteriser;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import com.alipay.acctrans.core.module.enums.AccountTypeEnum;
import com.alipay.airmng.common.service.facade.account.enums.AirAccountTypeEnum;
import com.alipay.airmng.common.service.facade.account.result.AirAccountServiceResult;
import com.alipay.morderprod.biz.order.product.SpecialProductManager;
import com.alipay.morderprod.biz.shared.enums.SpecialProductEnum;
import com.alipay.morderprod.common.service.integration.air.AirClient;
@RunWith(JMock.class)
public class AirManagerImplTest {
private Mockery context = new JUnit4Mockery() {
{
setImposteriser(ClassImposteriser.INSTANCE);
}
};
protected AirManagerImpl airManagerImpl = new AirManagerImpl();
//dependence class
AirClient airClient = context.mock(AirClient.class);
SpecialProductManager specialProductManager = context.mock(SpecialProductManager.class);
@Before
public void setUp() throws Exception {
airManagerImpl.setAirClient(airClient);
airManagerImpl.setSpecialProductManager(specialProductManager);
autoInject(airManagerImpl, specialProductManager, "specialProductManager");
}
/**
* 通过注解的方式注入对象.
*
* @param dest
* @param obj 需要注入的接口对象.
* @param name 需要注入的接口对象的名称.
*/
private void autoInject(Object dest, Object obj, String name) {
try {
Field f = dest.getClass().getDeclaredField(name);
f.setAccessible(true);//设置他能够访问private的对象.
f.set(dest, obj); //注入obj接口对象到dest对象中
} catch (Exception e) {
throw new RuntimeException("cannot set field by name:" + name, e);
}
}
@After
public void tearDown() throws Throwable {
context.assertIsSatisfied();
}
@Test
public void test_checkMainAccount() throws Throwable {
context.checking(new Expectations() {
{
SpecialProductEnum first = SpecialProductEnum.AIR_PERSONAL;
allowing(specialProductManager).getSpecialProduct(with(any(String.class)));
will(returnValue(first));
}
});
context.checking(new Expectations() {
{
AirAccountServiceResult first = new AirAccountServiceResult();
first.setSuccess(true);
allowing(airClient).checkMainAccount(with(any(String.class)),
with(any(AirAccountTypeEnum.class)));
will(returnValue(first));
}
});
String productId = "23123213123";
String mainCardNo = "23213213123";
AccountTypeEnum usertype = AccountTypeEnum.PRIVATE_ACCOUNT;
boolean result = airManagerImpl.checkMainAccount(productId, mainCardNo, usertype);
assertTrue(result);
}
@Test
public void test_checkMainAccount_1() throws Throwable {
context.checking(new Expectations() {
{
SpecialProductEnum first = SpecialProductEnum.AIR_PRO;
allowing(specialProductManager).getSpecialProduct(with(any(String.class)));
will(returnValue(first));
}
});
context.checking(new Expectations() {
{
AirAccountServiceResult first = new AirAccountServiceResult();
first.setSuccess(true);
allowing(airClient).checkMainAccount(with(any(String.class)),
with(any(AirAccountTypeEnum.class)));
will(returnValue(first));
}
});
String productId = "23123213123";
String mainCardNo = "23213213123";
AccountTypeEnum usertype = AccountTypeEnum.CORPORATE_ACCOUNT;
boolean result = airManagerImpl.checkMainAccount(productId, mainCardNo, usertype);
assertTrue(result);
}
@Test
public void test_checkMainAccount_2() throws Throwable {
context.checking(new Expectations() {
{
SpecialProductEnum first = SpecialProductEnum.AIR_PERSONAL;
allowing(specialProductManager).getSpecialProduct(with(any(String.class)));
will(returnValue(first));
}
});
context.checking(new Expectations() {
{
AirAccountServiceResult first = new AirAccountServiceResult();
first.setSuccess(false);
allowing(airClient).checkMainAccount(with(any(String.class)),
with(any(AirAccountTypeEnum.class)));
will(returnValue(first));
}
});
try {
String productId = "23123213123";
String mainCardNo = "23213213123";
AccountTypeEnum usertype = AccountTypeEnum.PRIVATE_ACCOUNT;
boolean result = airManagerImpl.checkMainAccount(productId, mainCardNo, usertype);
assertTrue(result);
} catch (Exception e) {
}
}
@Test
public void test_checkMainAccount_3() throws Throwable {
context.checking(new Expectations() {
{
SpecialProductEnum first = SpecialProductEnum.AIR_PRO;
allowing(specialProductManager).getSpecialProduct(with(any(String.class)));
will(returnValue(first));
}
});
context.checking(new Expectations() {
{
AirAccountServiceResult first = new AirAccountServiceResult();
first.setSuccess(false);
allowing(airClient).checkMainAccount(with(any(String.class)),
with(any(AirAccountTypeEnum.class)));
will(returnValue(first));
}
});
try {
String productId = "23123213123";
String mainCardNo = "23213213123";
AccountTypeEnum usertype = AccountTypeEnum.PRIVATE_ACCOUNT;
boolean result = airManagerImpl.checkMainAccount(productId, mainCardNo, usertype);
assertTrue(result);
} catch (Exception e) {
}
}
@Test
public void test_checkMainAccount_4() throws Throwable {
context.checking(new Expectations() {
{
allowing(specialProductManager).getSpecialProduct(with(any(String.class)));
will(throwException(new Exception()));
}
});
context.checking(new Expectations() {
{
AirAccountServiceResult first = new AirAccountServiceResult();
first.setSuccess(true);
allowing(airClient).checkMainAccount(with(any(String.class)),
with(any(AirAccountTypeEnum.class)));
will(returnValue(first));
}
});
try {
String productId = "";
String mainCardNo = "";
AccountTypeEnum usertype = AccountTypeEnum.PRIVATE_ACCOUNT;
boolean result = airManagerImpl.checkMainAccount(productId, mainCardNo, usertype);
assertTrue(result);
} catch (Exception e) {
}
}
}
分享到:
相关推荐
Java单元测试是软件开发过程中的重要环节,它主要用于验证代码的独立模块是否按照预期工作。在Java编程中,我们通常使用JUnit框架来进行单元测试。JUnit是开源的、基于Java的测试框架,它允许开发者编写可重复运行的...
Java单元测试是软件开发过程中的重要环节,它主要用于验证代码的独立模块是否按照预期工作。在Java编程中,单元测试确保了每一小部分代码(如方法或类)都能单独、正确地执行,从而提高整体软件质量,降低维护成本。...
系统单元测试规范-4:JAVA单元测试指引参照.pdf 本文档旨在提供一个系统的单元测试规范,旨在提高系统的代码健壮性和测试覆盖率。该规范涵盖了JAVA单元测试的指引,覆盖了测试的需求、测试颗粒化、测试自动化、持续...
综上所述,Java单元测试涉及到许多方面,从选择合适的测试框架,到编写有效的测试用例,再到集成到持续集成流程中,都是保证软件质量的关键步骤。熟练掌握这些知识点,将有助于开发出更加健壮、可维护的Java应用程序...
Java单元测试是软件开发过程中的重要环节,它主要用于验证代码的独立模块是否按照预期工作。在这个"java单元测试demo"中,我们关注的是如何通过测试来确保接口的正确性,以便在调试过程中清晰地查看输入参数和返回值...
这个“junit4 jar包 Java单元测试框架绿色免费版.zip”文件包含的是JUnit4框架的可执行jar包,用于在Java项目中进行单元测试。 JUnit4的引入极大地简化了单元测试的编写过程,它引入了注解(Annotation)的概念,...
本教程将深入探讨Java单元测试的基础,特别是结合JUnit框架的使用。 首先,我们需要理解什么是单元测试。单元测试是对软件中的最小可测试单元进行检查和验证的过程。对于Java来说,这通常是单个方法。通过编写测试...
### 使用Java单元测试实现一个简单的登录验证系统 #### 背景介绍 单元测试是软件开发过程中不可或缺的一部分,它能够帮助开发者确保代码的质量并及时发现潜在的问题。在本篇文章中,我们将详细介绍如何使用Java编写...
Java单元测试包主要包含了JUnit 4的不同版本,如4.7、4.8和4.11。JUnit是一个用于编写和运行Java单元测试的开源框架,它是Java开发中不可或缺的一部分,尤其是在实施持续集成和敏捷开发时。这个压缩包提供的是JUnit ...
### JAVA单元测试JUnit的核心知识点详解 #### 一、JUnit概览与重要性 JUnit作为一款卓越的Java单元测试框架,自问世以来便以其强大的功能和易用性深受开发者喜爱。由软件大师Erich Gamma和Kent Beck共同打造,...
总之,JUnit作为Java单元测试的重要工具,它的易用性和灵活性使其成为开发者不可或缺的测试框架。通过深入理解和熟练运用JUnit,可以有效地提高软件的可靠性,减少维护成本,同时提升开发团队的生产力。学习和掌握...
在Java开发过程中,单元测试是确保代码质量的重要环节。它帮助开发者发现并修复问题,提高软件的稳定性和可维护性。而代码覆盖率则是衡量单元测试有效性的一个关键指标,它表示了被测试代码被执行的程度。JaCoCo是一...
Java 单元测试篇:使用 Clover 为 Java 代码的 JUnit 测试做覆盖率分析 Java 单元测试是软件测试的重要组成部分,对于 Java 开发者来说,单元测试是必不可少的。今天,我们将学习使用 Clover 框架来分析 Java 代码...
Java单元测试之JUnit篇 Java单元测试是编写测试代码,应该准确、快速地保证程序基本模块的正确性。好的单元测试的标准是JUnit,它是Java单元测试框架,已经在Eclipse中默认安装。 JUnit4是JUnit的最新版本,通过...
Java单元测试是软件开发过程中的重要一环,它主要用于验证代码的各个独立模块是否按预期工作。JUnit作为Java领域中最常用的单元测试框架,为开发者提供了简单、高效的测试工具。在这个"Java单元测试之JUnit"的代码...
Java单元测试实战来自于作者多年来的单元测试实践,最初发表在阿里内网的ATA上,成为了很多阿里同学单元测试学习的必读文章。很多程序员认为单元测试会花费大量的时间,因此他们写单元测试的意愿比较低,导致了单元...
基于java的开发源码-junit4 jar包 Java单元测试框架绿色免费版.zip 基于java的开发源码-junit4 jar包 Java单元测试框架绿色免费版.zip 基于java的开发源码-junit4 jar包 Java单元测试框架绿色免费版.zip 基于java的...
Java单元测试是软件开发过程中的重要环节,它用于验证代码的独立模块是否按预期工作。JUnit是Java领域最广泛使用的单元测试框架,它为开发者提供了一种简洁、高效的测试工具。JUnit 4.7是该框架的一个版本,包含了对...
用于java单元测试的资源包 junit-4.11.jar hamcrest-core-1.3.jar