在上面篇文章,我们的测试代码如下:
1package com.martin.pdo;
2
3import org.springframework.context.ApplicationContext;
4
5import junit.framework.Assert;
6import junit.framework.TestCase;
7
8public class UserTest extends TestCase {
9
10 public void testUser() {
11 ApplicationContext context = JUnitTestHelper.getContext();
12 User user = (User) context.getBean("user");
13 User _u1 = new User();
14 _u1.setName("martin xus");
15 _u1.setSex('F');
16 _u1.setAge(100);
17 user.add(_u1);
18
19 Assert.assertNotNull(_u1.getId());
20
21 User _u2 = (User) user.loadByName("martin xus").get(0);
22 Assert.assertEquals(_u1.getId(), _u2.getId());
23
24 user.remove(_u2);
25 Assert.assertTrue(user.loadByName("martin xus").size() == 0);
26 }
27
28}
29
2
3import org.springframework.context.ApplicationContext;
4
5import junit.framework.Assert;
6import junit.framework.TestCase;
7
8public class UserTest extends TestCase {
9
10 public void testUser() {
11 ApplicationContext context = JUnitTestHelper.getContext();
12 User user = (User) context.getBean("user");
13 User _u1 = new User();
14 _u1.setName("martin xus");
15 _u1.setSex('F');
16 _u1.setAge(100);
17 user.add(_u1);
18
19 Assert.assertNotNull(_u1.getId());
20
21 User _u2 = (User) user.loadByName("martin xus").get(0);
22 Assert.assertEquals(_u1.getId(), _u2.getId());
23
24 user.remove(_u2);
25 Assert.assertTrue(user.loadByName("martin xus").size() == 0);
26 }
27
28}
29
而这些,必须要和spring&hibernate一起工作,必须保证数据库操作正确,而我们需要的只是测试这个类的本身!
有必要连hibernate,spring一起测试吗?当然没有,测试,只需要保证本代码完成相应的功能,即可.
那么就有必要更换测试方法:
mock便是首选,在这里我们选择了jmock (http://www.jmock.org)
1package com.martin.mock;
2
3import org.jmock.Mock;
4import org.jmock.MockObjectTestCase;
5
6import java.util.List;
7
8/**
9 * @author martin.xus
10 */
11public class UserTest extends MockObjectTestCase {
12
13 public void testAdd() {
14 Mock mock = mock(UserManager.class);
15 User user = new User();
16 mock.expects(once()).method("add").with(isA(User.class));
17 UserManager manager = (UserManager) mock.proxy();
18
19 user.setManager(manager);
20 user.add(new User());
21 mock.verify();
22 }
23
24 public void testLoadByName() {
25 Mock mock = mock(UserManager.class);
26 User user = new User();
27
28 mock.expects(once()).method("loadByName").with(isA(String.class)).will(returnValue(List.class));
29 UserManager manager = (UserManager) mock.proxy();
30
31 user.setManager(manager);
32 user.loadByName("martin");
33 mock.verify();
34 }
35
36 public void testRemove(){
37 Mock mock = mock(UserManager.class);
38 User user = new User();
39
40 mock.expects(once()).method("remove").with(isA(User.class));
41 UserManager manager = (UserManager) mock.proxy();
42
43 user.setManager(manager);
44 user.remove(user);
45 mock.verify();
46 }
47}
2
3import org.jmock.Mock;
4import org.jmock.MockObjectTestCase;
5
6import java.util.List;
7
8/**
9 * @author martin.xus
10 */
11public class UserTest extends MockObjectTestCase {
12
13 public void testAdd() {
14 Mock mock = mock(UserManager.class);
15 User user = new User();
16 mock.expects(once()).method("add").with(isA(User.class));
17 UserManager manager = (UserManager) mock.proxy();
18
19 user.setManager(manager);
20 user.add(new User());
21 mock.verify();
22 }
23
24 public void testLoadByName() {
25 Mock mock = mock(UserManager.class);
26 User user = new User();
27
28 mock.expects(once()).method("loadByName").with(isA(String.class)).will(returnValue(List.class));
29 UserManager manager = (UserManager) mock.proxy();
30
31 user.setManager(manager);
32 user.loadByName("martin");
33 mock.verify();
34 }
35
36 public void testRemove(){
37 Mock mock = mock(UserManager.class);
38 User user = new User();
39
40 mock.expects(once()).method("remove").with(isA(User.class));
41 UserManager manager = (UserManager) mock.proxy();
42
43 user.setManager(manager);
44 user.remove(user);
45 mock.verify();
46 }
47}
ok,测试通过
<!----><!----><!---->
相关推荐
**Jmock2.6 Jar包**是Java编程领域中用于单元测试的重要库,它提供了模拟对象的功能,使得开发者能够在测试代码时对复杂依赖关系进行控制和隔离。在本文中,我们将深入探讨Jmock2.6的核心特性、使用场景以及如何在...
**JMock 深度解析** JMock 是一个流行的开源测试框架,专为Java开发者设计,用于模拟对象的行为,特别是在单元测试中。它允许程序员在不依赖真实对象的情况下测试代码,提高了测试的效率和隔离性。这篇详尽的讨论将...
《jMock 2.5.1:模拟与测试的艺术》 在软件开发中,单元测试是确保代码质量的重要环节,而模拟(Mocking)技术则是单元测试中的关键工具。jMock,作为Java平台上的一个开源模拟框架,为开发者提供了一种高效、灵活...
【jmock-2.6.0-jars】这个压缩包主要包含了`jmock`库的2.6.0版本的jar文件以及相关的源代码。`jmock`是Java平台上的一个模拟框架,它允许开发者在单元测试中创建和控制对象的行为,以便能够隔离测试并精确地指定期望...
《jMock 2.5.1:模拟对象与单元测试的艺术》 jMock是一个强大的Java模拟框架,它在软件开发的单元测试阶段扮演着至关重要的角色。jMock 2.5.1是该框架的一个版本,它提供了丰富的功能,帮助开发者创建虚拟对象,...
《JMock Cookbook资源整合》是关于Java测试领域中JMock库使用的详细指南,旨在帮助开发者更好地理解和运用这个强大的模拟框架。JMock是一个用于Java应用程序单元测试的工具,它允许程序员模拟对象的行为,以便在孤立...
**JMock 概述** JMock 是一个Java平台上的单元测试框架,专门用于模拟对象,以便在测试过程中控制和验证对象的行为。它基于EasyMock库,但提供了更强大的功能,尤其是对于处理复杂交互和顺序的场景。JMock使得...
《JMock:模拟对象软件测试工具的深度解析》 在软件开发过程中,单元测试是确保代码质量的关键步骤。为了有效地进行单元测试,我们常常需要模拟(mock)对象,以便隔离测试目标并控制其行为。这就是JMock的作用所在...
《JMock 1.2.0 - 模拟与测试的艺术》 JMock 是一个流行的 Java 开源库,专门用于创建和管理模拟对象,以便在单元测试中隔离被测代码。这个压缩包“jmock-1.2.0-jars.rar”包含的是 JMock 1.2.0 版本的 jar 文件,它...
**JMock使用文档** 在Java开发中,单元测试是一项至关重要的任务,它能确保代码的质量和可维护性。JMock是一款强大的模拟框架,专门用于Java应用程序的单元测试,特别是对于那些依赖于复杂外部接口或者服务的类。本...
jMock 2: Java 5 and above. Stable: 2.5.1 Binary JARs (includes the source to let IDEs provide context-sensitive help) Javadocs Unstable: 2.6.0-RC2 Binary JARs (includes the source to let IDEs ...
而JMock和EasyMock则是两种广泛使用的Java单元测试框架,它们允许开发者模拟对象的行为和交互,以便于测试复杂的系统。本资源包含JMock 2.5.1和EasyMock 3.0的库文件,使得开发者在进行单元测试时无需再四处寻找相关...
Maven-Central / jmock / jmock-cglib 1.2.0 Maven-Central / org.apache.activemq / activemq-ra 5.2.05.1.0 Maven-Central / org.apache.maven.shared / maven-dependency-tree 1.21.1 Maven-Central / org.apache...
本文将深入探讨JMock库,它是一个强大的Java模拟框架,常用于单元测试,以及如何结合Spring测试模块进行高效测试。 JMock是一个用于创建和验证对象行为的模拟框架,它允许开发者在测试中模拟对象的行为,而不是依赖...
### jMock基本使用方法 #### 一、简介 jMock 是一个流行的 Java 框架,用于支持单元测试,特别是对于模拟对象(mock objects)的支持。通过 jMock,开发人员可以轻松地创建模拟对象来替代实际的对象依赖,从而在...
`jmock-2.6.0-RC2-javadoc.zip`和`jmock-2.5.1-javadoc.zip`包含的是`jmock`的API文档,可以帮助开发者理解和使用其API。`jmock-2.6.0-RC2-jars.zip`和`jmock-2.5.1-jars.zip`则包含了相应的库文件,可以直接在项目...
JMock 是一个流行的 Java 模拟框架,它使开发者能够创建模拟对象并定义它们的行为和期望。然而,传统上,JMock 主要用于模拟实现了接口的类,那么当我们需要模拟没有接口的类时,该怎么办呢?这就是 JMock 联合 ...