`
dannyhz
  • 浏览: 393782 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

Easymock mock 异常处理的模拟代码

阅读更多

@Test(expected = ReferenceRetryException.class)
	public void testTryErrorsButHasReturn() throws Exception {
		
		String schema = "BPOS";
		Map<String, Object> parameters = new HashMap<String, Object>();

		parameters.put("REGION_FUND", "SRS1");
		parameters.put("CLIENT_ACCT", "SLX1");
		parameters.put("CUSIP", "007942006");

		ReferenceMeta rm = new ReferenceMeta();
		rm.setMetaKey("metaKey");
		rm.setSchema(schema);
		rm.setRequestNumber("500011");
		rm.setContext("osw");
		rm.setOutputFields("Fieldname1,Fieldname2,Fieldname3");
		rm.setRegion("UA1NA");

		parameters.put(Constants.PARAM_META, rm);
		parameters.put(Constants.PARAM_COLUMNS_CACHED, true);

		String user = "user";
		String password = "pass";

		final Client client2 = mockControl.createMock(Client.class);

		client2.signOn(user, password);
		expectLastCall().times(3);
		
		ResultSet resultSet = null;
		try {
			resultSet = mockControl.createMock(ResultSet.class);
			Column[] columns = new Column[2];
			columns[0] = createMockBuilder(Column.class).withConstructor("column1", "string").createMock();
			columns[1] = createMockBuilder(Column.class).withConstructor("column2", "string").createMock();
			expect(resultSet.getColumns()).andReturn(columns);

			String status = "INTERNAL ERROR [B061 ERROR:  BRIHRC_INVALID_FACILITYTOKEN - Tran=ATNU, Compcode=001]";
			expect(resultSet.getString("__status")).andReturn(status);
			expectLastCall().times(1);
			
			expect(resultSet.getString("__errorMsg")).andReturn("");
			expectLastCall().times(1);

			expect(resultSet.getString("column1")).andReturn("value1");
			expectLastCall().times(1);

			expect(resultSet.getString("column2")).andReturn("value2");
			expectLastCall().times(1);

			expect(resultSet.next()).andReturn(true);
			expectLastCall().times(1);
			expect(resultSet.next()).andReturn(false);
			expectLastCall().times(1);
		} catch (Exception e1) {
			e1.printStackTrace();
		}
		
		expect(client2.process((String) anyObject())).andReturn(resultSet).times(2);
		
		custodyChannel = new CustodyReferenceChannel() {
			@Override
			protected Client createClient(String signUrl, String metaKey) {
				return client2;
			}
		};

		custodyChannel.setUser(user);
		custodyChannel.setPassword(password);


		setReferenceBuilder();
		mockControl.replay();

		ReferenceSet rs = custodyChannel.getReference(schema, parameters);


		Assert.assertNotNull(rs);
		Assert.assertEquals(schema, rs.getSchema());
		Assert.assertEquals(1, rs.getDataList().size());
		Assert.assertEquals("value1", rs.getDataList().get(0).get("column1"));
		Assert.assertEquals("value2", rs.getDataList().get(0).get("column2"));

	}
	


分享到:
评论

相关推荐

    easymock资料和源代码实例

    Easymock是一款强大的Java单元测试工具,它允许开发者创建模拟对象来协助测试代码。这款框架使得测试变得简单,因为它可以模拟任何接口的行为,而无需实际实现这些接口。下面我们将详细探讨Easymock的基本概念、工作...

    easyMock resource

    这时,我们可以使用EasyMock创建B的mock对象,设置其返回值或抛出异常,然后在JUnit测试中使用这个mock对象代替真实的B,从而专注于测试类A的行为。 在文件名称列表`testFromwork`中,可能包含了相关的测试代码示例...

    easyMock

    - **异常模拟**:可以设置模拟对象在特定方法调用时抛出异常,模拟错误情况。 - **匹配器**:使用EasyMock提供的匹配器(如`eq()`、`anyObject()`等)可以精确控制方法参数的匹配条件。 - **顺序模拟**:如果多个...

    EasyMock单元测试例子

    4. **回调(Callback)**:EasyMock支持在模拟对象的方法被调用时执行自定义代码,这可以用来模拟更复杂的行为。 下面是一些使用EasyMock的关键知识点: 1. **创建模拟对象**:使用`EasyMock.createMock()`创建...

    easymock2.4+EasyMock使用简明手册.pdf

    1. **模拟对象(Mock Object)**:EasyMock允许我们创建模拟对象,这些对象可以模仿真实对象的行为,但不会执行实际的业务逻辑。这样,我们可以在测试中专注于代码的单一行为,而不受其他依赖的影响。 2. **期望...

    EasyMock

    例如,如果你有一个名为`MyInterface`的接口,你可以这样创建它的模拟对象:`MyInterface mock = EasyMock.createMock(MyInterface.class);` 2. **定义预期**:接着,你需要使用`expect()`方法设置模拟对象的方法...

    5-Mock+EasyMock.rar

    【标题】"5-Mock+EasyMock.rar" 涉及到的是软件开发中的测试技术,特别是关于模拟对象(Mock Objects)和EasyMock框架的应用。在软件开发中,特别是使用面向对象编程时,Mock对象是一种重要的测试策略,它用于替代...

    EasyMock与Mockito 使用

    EasyMock和Mockito是两个广泛使用的Java模拟框架,它们可以帮助开发者在隔离环境中测试代码,避免了依赖其他组件或服务的复杂性。本文将详细介绍这两个工具的使用方法、原理和差异。 **EasyMock** EasyMock是一个...

    EasyMock入门

    1. **模拟对象(Mock Object)**:这是由EasyMock生成的对象,它的行为可以被预定义。在测试中,你可以告诉模拟对象如何响应特定的调用。 2. **期望(Expectations)**:在测试中,你需要设置对模拟对象的期望调用...

    EasyMock.jar

    3. **异常模拟**:如果你想让模拟对象在特定方法调用时抛出异常,可以使用`expect().andThrow()`。这有助于测试异常处理代码。 4. **验证调用**:使用`replay()`方法启动模拟对象的验证阶段,之后所有对模拟对象的...

    easymock-2.5.2工具 下载

    EasyMock 是一个强大的开源工具,专门用于生成模拟对象(Mock Objects),在软件开发特别是单元测试领域,它扮演着至关重要的角色。这个工具的版本为2.5.2,提供了对Java编程语言的支持,使得开发者能够方便地创建和...

    easymock2.4.zip

    2. **返回值和异常的控制**:你可以指定mock对象在特定方法被调用时返回什么值或抛出什么异常,以测试代码的错误处理逻辑。 3. **验证方法调用**:测试结束后,Easymock会验证所有预定义的预期是否已满足,这有助于...

    easymock教程

    - **ClassMocking**:Easymock支持对特定类的实例进行Mock处理,这在需要模拟非接口类型的类时非常有用。 ##### 1.7 Mock的限制 - **构造函数调用**:Mock对象无法模拟构造函数调用。 - **静态方法**:默认情况下...

    easymock 3.0

    5. **异常测试**:可以设置mock对象抛出预期的异常,以便测试错误处理代码: ```java EasyMock.expect(myMock.someMethod()).andThrow(new SomeException()); ``` 6. **部分Mock**:有时候,你可能希望只对某些...

    easymock详解教程

    - **模拟依赖对象**:使用easymock模拟待测代码中的依赖对象,以确保测试的独立性和可重复性。 - **验证交互**:通过easymock记录待测代码与模拟对象之间的交互,确保其按预期工作。 - **简化测试编写**:easymock...

    easymock3.2 (文档+源码+例子)

    Easymock是一款强大的Java单元测试工具,它允许开发者创建模拟对象来测试代码。这个压缩包包含的是Easymock的3.2版本,其中包括文档、源码和示例,对于学习和理解Easymock的工作原理以及如何在实际项目中使用它非常...

    easymock.jar包

    Nice Mock允许所有未设置期望的方法默认返回默认值,而Strict Mock则会在未设置期望的方法被调用时抛出异常,这有助于发现未覆盖的代码路径。 此外,Easymock 3.3版本引入了一些增强特性,比如对Java代理的支持,...

    EasyMock 实例

    除了基本的模拟和期望,EasyMock还提供了更高级的功能,如 Nice Mocks(对未预期的调用返回默认值)、Strict Mocks(对未预期的调用抛出异常)以及Partial Mocks(部分模拟,只模拟部分方法)等。此外,还可以结合...

    easymock-4.0-bundle

    它提供对接口的模拟,能够通过录制、回放、检查三步来完成大体的测试过程,可以验证方法的调用种类、次数、顺序,可以令 Mock 对象返回指定的值或抛出指定异常。通过 EasyMock,我们可以方便的构造 Mock 对象从而使...

Global site tag (gtag.js) - Google Analytics