临海响应式网站设计,自己做网站可以赚钱吗,网站建设企业宣传册,万网 网站模板TestNG是一个测试框架#xff0c;旨在涵盖所有类别的测试#xff1a;单元#xff0c;功能#xff0c;端到端#xff0c;集成等。 它包括许多功能#xff0c;例如灵活的测试配置#xff0c;对数据驱动测试的支持#xff08;使用DataProvider#xff09;#xff0c;强大… TestNG是一个测试框架旨在涵盖所有类别的测试单元功能端到端集成等。 它包括许多功能例如灵活的测试配置对数据驱动测试的支持使用DataProvider强大的执行模型不再需要TestSuite等等。 弹簧测试支持涵盖了基于弹簧的应用程序的单元和集成测试的非常有用和重要的功能。 org.springframework.test.context.testng包为基于TestNG的测试用例提供支持类。 本文展示了如何通过使用Spring和TestNG集成来测试Spring Service层组件。 下一篇文章还将展示如何使用相同的集成来测试Spring Data Access层组件。 二手技术 JDK 1.6.0_31 春天3.1.1 测试NG 6.4 Maven的3.0.2 步骤1建立已完成的专案 如下创建一个Maven项目。 可以使用Maven或IDE插件来创建它。 步骤2图书馆 Spring依赖项已添加到Maven的pom.xml中。 propertiesspring.version3.1.1.RELEASE/spring.version/propertiesdependencies!-- Spring 3 dependencies --dependencygroupIdorg.springframework/groupIdartifactIdspring-core/artifactIdversion${spring.version}/version/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-context/artifactIdversion${spring.version}/version/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-test/artifactIdversion${spring.version}/version/dependency!-- TestNG dependency --dependencygroupIdorg.testng/groupIdartifactIdtestng/artifactIdversion6.4/version/dependency!-- Log4j dependency --dependencygroupIdlog4j/groupIdartifactIdlog4j/artifactIdversion1.2.16/version/dependency/dependencies 步骤3建立使用者类别 创建一个新的用户类。 package com.otv.user;/*** User Bean** author onlinetechvision.com* since 19 May 2012* version 1.0.0**/
public class User {private String id;private String name;private String surname;/*** Gets User Id** return String id*/public String getId() {return id;}/*** Sets User Id** param String id*/public void setId(String id) {this.id id;}/*** Gets User Name** return String name*/public String getName() {return name;}/*** Sets User Name** param String name*/public void setName(String name) {this.name name;}/*** Gets User Surname** return String Surname*/public String getSurname() {return surname;}/*** Sets User Surname** param String surname*/public void setSurname(String surname) {this.surname surname;}Overridepublic String toString() {StringBuilder strBuilder new StringBuilder();strBuilder.append(Id : ).append(getId());strBuilder.append(, Name : ).append(getName());strBuilder.append(, Surname : ).append(getSurname());return strBuilder.toString();}Overridepublic int hashCode() {final int prime 31;int result 1;result prime * result ((id null) ? 0 : id.hashCode());result prime * result ((name null) ? 0 : name.hashCode());result prime * result ((surname null) ? 0 : surname.hashCode());return result;}Overridepublic boolean equals(Object obj) {if (this obj)return true;if (obj null)return false;if (getClass() ! obj.getClass())return false;User other (User) obj;if (id null) {if (other.id ! null)return false;} else if (!id.equals(other.id))return false;if (name null) {if (other.name ! null)return false;} else if (!name.equals(other.name))return false;if (surname null) {if (other.surname ! null)return false;} else if (!surname.equals(other.surname))return false;return true;}
} 步骤4创建NonExistentUserException类 NonExistentUserException类已创建。 package com.otv.common.exceptions;/*** Non Existent User Exception** author onlinetechvision.com* since 19 May 2012* version 1.0.0**/
public class NonExistentUserException extends Exception {private static final long serialVersionUID 1L;public NonExistentUserException(String message) {super(message);}
} 第5步创建ICacheService接口 创建了代表缓存服务接口的ICacheService接口。 package com.otv.cache.service;import java.util.concurrent.ConcurrentHashMap;import com.otv.user.User;/*** Cache Service Interface** author onlinetechvision.com* since 19 May 2012* version 1.0.0**/
public interface ICacheService {/*** Gets User Map** return ConcurrentHashMap User Map*/ConcurrentHashMapString, User getUserMap();} 步骤6创建CacheService类 CacheService类是通过实现ICacheService接口创建的。 它提供对远程缓存的访问… package com.otv.cache.service;import java.util.concurrent.ConcurrentHashMap;import com.otv.user.User;/*** Cache Service Implementation** author onlinetechvision.com* since 19 May 2012* version 1.0.0**/
public class CacheService implements ICacheService {//User Map is injected...private ConcurrentHashMapString, User userMap;/*** Gets User Map** return ConcurrentHashMap User Map*/public ConcurrentHashMapString, User getUserMap() {return userMap;}/*** Sets User Map** param ConcurrentHashMap User Map*/public void setUserMap(ConcurrentHashMapString, User userMap) {this.userMap userMap;}} 步骤7建立IUserService介面 创建了代表用户服务接口的IUserService接口。 package com.otv.user.service;import java.util.Collection;import com.otv.common.exceptions.NonExistentUserException;
import com.otv.user.User;/**** User Service Interface** author onlinetechvision.com* since 19 May 2012* version 1.0.0**/
public interface IUserService {/*** Adds User** param User user* return boolean whether delete operation is success or not.*/boolean addUser(User user);/*** Deletes User** param User user* return boolean whether delete operation is success or not.*/boolean deleteUser(User user);/*** Updates User** param User user* throws NonExistentUserException*/void updateUser(User user) throws NonExistentUserException;/*** Gets User** param String User Id* return User*/User getUserById(String id);/*** Gets User Collection** return List - User list*/CollectionUser getUsers();
} 步骤8创建UserService类 通过实现IUserService接口创建UserService类。 package com.otv.user.service;import java.util.Collection;
import com.otv.cache.service.ICacheService;
import com.otv.common.exceptions.NonExistentUserException;
import com.otv.user.User;/**** User Service** author onlinetechvision.com* since 19 May 2012* version 1.0.0**/
public class UserService implements IUserService {//CacheService is injected...private ICacheService cacheService;/*** Adds User** param User user* return boolean whether delete operation is success or not.*/public boolean addUser(User user) {getCacheService().getUserMap().put(user.getId(), user);if(getCacheService().getUserMap().get(user.getId()).equals(user)) {return true;}return false;}/*** Deletes User** param User user* return boolean whether delete operation is success or not.*/public boolean deleteUser(User user) {User removedUser getCacheService().getUserMap().remove(user.getId());if(removedUser ! null) {return true;}return false;}/*** Updates User** param User user* throws NonExistentUserException*/public void updateUser(User user) throws NonExistentUserException {if(getCacheService().getUserMap().containsKey(user.getId())) {getCacheService().getUserMap().put(user.getId(), user);} else {throw new NonExistentUserException(Non Existent User can not update! User : user);}}/*** Gets User** param String User Id* return User*/public User getUserById(String id) {return getCacheService().getUserMap().get(id);}/*** Gets User List** return Collection - Collection of Users*/public CollectionUser getUsers() {return (CollectionUser) getCacheService().getUserMap().values();}/*** Gets Cache Service** return ICacheService - Cache Service*/public ICacheService getCacheService() {return cacheService;}/*** Sets Cache Service** param ICacheService - Cache Service*/public void setCacheService(ICacheService cacheService) {this.cacheService cacheService;}} 步骤9创建UserServiceTester类 通过扩展AbstractTestNGSpringContextTests创建用户服务测试器类。 package com.otv.user.service.test;import junit.framework.Assert;import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.testng.AbstractTestNGSpringContextTests;
import org.testng.annotations.AfterClass;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;import com.otv.common.exceptions.NonExistentUserException;
import com.otv.user.User;
import com.otv.user.service.IUserService;/*** User Service Tester Class** author onlinetechvision.com* since 19 May 2012* version 1.0.0**/
ContextConfiguration(locations{classpath:applicationContext.xml})
public class UserServiceTester extends AbstractTestNGSpringContextTests {private static Logger logger Logger.getLogger(UserServiceTester.class);Autowiredprivate IUserService userService;private User firstUser;private User secondUser;private User thirdUser;/*** Creates Test Users**/private void createUsers() {firstUser new User();firstUser.setId(1);firstUser.setName(Lionel);firstUser.setSurname(Messi);secondUser new User();secondUser.setId(2);secondUser.setName(David);secondUser.setSurname(Villa);thirdUser new User();thirdUser.setId(3);thirdUser.setName(Andres);thirdUser.setSurname(Iniesta);}/*** Asserts that User Properties are not null.** param User*/private void assertNotNullUserProperties(User user) {Assert.assertNotNull(User must not be null!, user);Assert.assertNotNull(Id must not be null!, user.getId());Assert.assertNotNull(Name must not be null!, user.getName());Assert.assertNotNull(Surname must not be null!, user.getSurname());}/*** The annotated method will be run before any test method belonging to the classes* inside the test tag is run.**/BeforeTestpublic void beforeTest() {logger.debug(BeforeTest method is run...);}/*** The annotated method will be run before the first test method in the current class* is invoked.**/BeforeClasspublic void beforeClass() {logger.debug(BeforeClass method is run...);createUsers();}/*** The annotated method will be run before each test method.**/BeforeMethodpublic void beforeMethod() {logger.debug(BeforeMethod method is run...);} /*** Tests the process of adding user**/Testpublic void addUser() {assertNotNullUserProperties(firstUser);Assert.assertTrue(User can not be added! User : firstUser, getUserService().addUser(firstUser));}/*** Tests the process of querying user**/Testpublic void getUserById() {User tempUser getUserService().getUserById(firstUser.getId());assertNotNullUserProperties(tempUser);Assert.assertEquals(Id is wrong!, 1, tempUser.getId());Assert.assertEquals(Name is wrong!, Lionel, tempUser.getName());Assert.assertEquals(Surname is wrong!, Messi, tempUser.getSurname());}/*** Tests the process of deleting user**/Testpublic void deleteUser() {assertNotNullUserProperties(secondUser);Assert.assertTrue(User can not be added! User : secondUser, getUserService().addUser(secondUser));Assert.assertTrue(User can not be deleted! User : secondUser, getUserService().deleteUser(secondUser));}/*** Tests the process of updating user* throws NonExistentUserException**/Test(expectedExceptions NonExistentUserException.class)public void updateUser() throws NonExistentUserException {getUserService().updateUser(thirdUser);}/*** Test user count**/Testpublic void getUserCount() {Assert.assertEquals(1, getUserService().getUsers().size());}/*** The annotated method will be run after all the test methods in the current class have been run.**/AfterClasspublic void afterClass() {logger.debug(AfterClass method is run...);}/*** The annotated method will be run after all the test methods belonging to the classes inside the test tag have run.**/AfterTestpublic void afterTest() {logger.debug(AfterTest method is run...);}/*** The annotated method will be run after each test method.**/AfterMethodpublic void afterMethod() {logger.debug(AfterMethod method is run...);}/*** Gets User Service** return IUserService User Service*/public IUserService getUserService() {return userService;}/*** Sets User Service** param IUserService User Service*/public void setUserService(IUserService userService) {this.userService userService;}} 步骤10创建applicationContext.xml 应用程序上下文的创建如下 beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsd!-- User Map Declaration --bean idUserMap classjava.util.concurrent.ConcurrentHashMap /!-- Cache Service Declaration --bean idCacheService classcom.otv.cache.service.CacheServiceproperty nameuserMap refUserMap//bean!-- User Service Declaration --bean idUserService classcom.otv.user.service.UserServiceproperty namecacheService refCacheService//bean
/beans 步骤11运行项目 在本文中已使用TestNG Eclipse插件。 如果使用Eclipse则可以通过TestNG下载页面下载它 如果运行UserServiceTester 则测试用例的结果如下所示 步骤12下载 OTV_SpringTestNG 参考资料 Spring测试支持 TestNG参考 参考 Online Technology Vision博客中的JCG合作伙伴 Eren Avsarogullari 提供的TestNG的Spring测试支持 。 翻译自: https://www.javacodegeeks.com/2012/05/spring-testing-support-with-testng.html