我们上次写了一个user-core模块,管理用户信息的,这次我们写另外一个模块(日志模块),为以后的Maven耦合做准备。
我们创建日志模块的工程,依然创建Maven项目(user-log):
我们要使用common logging来写日志信息,所以我们在pom中添加这个依赖:
<dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.1.1</version> </dependency>
我们还需要特殊版本的log4j:
<dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.9</version> </dependency>
然后我们将第一个项目user-core和第二个项目user-log都打成jar包,并且上传至本地仓库:
鼠标放在项目的pom.xml上,点击鼠标右键:
我们前两个都打好包了,我们开创建第三个模块user-service:
然后我们将之前的两个模块都加进去:
<dependency> <groupId>${project.groupId}</groupId> <artifactId>user-log</artifactId> <version>${project.version}</version> </dependency> <dependency> <groupId>${project.groupId}</groupId> <artifactId>user-core</artifactId> <version>${project.version}</version> </dependency>
我们会发现,所有和user-core和user-log有关的依赖jar包全部都加进工程来了:
这就是传说中的“依赖传递”。
接下来在该模块中创建Service类:
IUserService:
package cn.edu.hpu.maven.user_service; import cn.edu.hpu.user.model.User; public interface IUserService { public void add(User user); public User loadByUsername(String username); }
UserService:
package cn.edu.hpu.maven.user_service; import cn.edu.hpu.user.dao.IUserDao; import cn.edu.hpu.user.model.User; public class UserService implements IUserService{ private IUserDao userDao; public UserService(IUserDao userDao) { super(); this.userDao = userDao; } public void add(User user) { userDao.add(user); } public User loadByUsername(String username) { return userDao.loadUsername(username); } }
接下来我们做测试:
因为我们要使用easymock来测试两个模块之间的调用关系是否正常,所以我们在pom.xml添加此依赖:
<dependency> <groupId>org.easymock</groupId> <artifactId>easymock</artifactId> <version>3.4</version> </dependency>
然后我们编写测试类:
TestUserService:
package cn.edu.hpu.maven.user_service; import static org.easymock.EasyMock.*; import org.junit.After; import org.junit.Before; import org.junit.Test; import cn.edu.hpu.user.dao.IUserDao; import cn.edu.hpu.user.model.User; import cn.edu.hpu.user.util.EntitiesHelper; public class TestUserService { private IUserDao userDao; private IUserService userService; private User baseUser; @Before public void setUp(){ userDao= createStrictMock(IUserDao.class); userService=new UserService(userDao); baseUser=new User("admin","123","dmin"); } @Test public void testAdd(){ userDao.add(baseUser); expectLastCall(); replay(userDao); userService.add(baseUser); } @Test public void testLoadByUsername(){ expect(userDao.loadUsername("admin")).andReturn(baseUser); replay(userDao); User tu=userService.loadByUsername("admin"); EntitiesHelper.assertUser(tu, baseUser); } @After public void tearDown(){ verify(userDao); } }
然后我们测试并打包:
测试结果成功:
下一次我们做Web模块,将我们的核心模块user-core、日志模块user-log以及业务模块user-service合并到我们的Web层中去。
转载请注明出处:http://blog.csdn.net/acmman/article/details/50623047
时间: 2024-10-27 11:29:34