在上面篇文章,我们的测试代码如下:
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,测试通过
<!----><!----><!---->
相关推荐
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 ...
jmock2.5.1.zip
Jmock2.6 jar包
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可以模拟对象,常用于单元测试,与junit配合使用 jmock-2.5.1-javadoc
Jmock Mock 没有接口的类 很方便使用
JMOCK 帮助 网页 文档 在网上找的一些bolg里的文档 JMOCK 帮助 网页 文档 在网上找的一些bolg里的文档
jmock jar和源码
jmock-1.0.1.jar jmock-1.0.1.jar
Jmock学习手册,让你更快学习Jmock。。
JMock2.5.1和EasyMock3.0以及一些JUnit单元测试所需的jar,让你使用JMock和EasyMock时不用到处找相关的jar。
JMock is a library that supports test-driven development1 of Java2 code with mock objects3. Mock objects help you design and test the interactions between the objects in your programs.
jmock-1.2.0-jars.rar
jmock2.5基本教程目录第0章 概述第1章 jmock初体验第2章 期望第3章 返回值第4章 参数匹配第5章 指定方法调用次数第6章 指定执行序列第7章 状态机第0章 概述
jMock利用mock objects思想来对Java code进行测试。jMock具有以下特点:容易扩展,让你快速简单地定义mock objects,因此不必打破程序间的关联,让你定义灵活的超越对象之间交互作用而带来测试局限,减少你测试地脆弱...
这个是几篇关于如何使用JMOCK对java代码测试,如果实在不清楚,也可咨询 445054051
NULL 博文链接:https://tristan-s.iteye.com/blog/1750265
jmock学习文档,模拟对象技术,jMock 可以和既有的其他测试框架,如JUnit,很好地整合在一起,共同使用。
jmock的chm格式文档。版本2.6.0
Mock测试主要是用来模拟那些在应用中不容易构造(如HttpServletRequest必须在Servlet容器中才能构造出来)或者比较复杂的对象(如JDBC中的ResultSet对象),从而使测试顺利进行...JMock是基于JAVA编写的Mock测试框架。