commit
This commit is contained in:
+10
-5
@@ -1,5 +1,10 @@
|
||||
/.project
|
||||
/.settings
|
||||
/src
|
||||
/.idea
|
||||
/*.iml
|
||||
.project
|
||||
.settings
|
||||
target
|
||||
.classpath
|
||||
.idea
|
||||
*.iml
|
||||
.gradle
|
||||
build
|
||||
dependency-reduced-pom.xml
|
||||
/src
|
||||
@@ -12,6 +12,7 @@
|
||||
<module>spring3-jmx-example</module>
|
||||
<module>spring3-rmi-example</module>
|
||||
<module>spring3-rmi-httpinvoker-example</module>
|
||||
<module>spring-boot-example</module>
|
||||
<module>spring-boot-example</module>
|
||||
<module>spring3-testng-example</module>
|
||||
</modules>
|
||||
</project>
|
||||
@@ -1,3 +0,0 @@
|
||||
/spring-boot-example.iml
|
||||
/target
|
||||
/*.iml
|
||||
@@ -1,5 +0,0 @@
|
||||
/.project
|
||||
/.settings
|
||||
/target
|
||||
/.classpath
|
||||
/*.iml
|
||||
@@ -1,5 +0,0 @@
|
||||
/.project
|
||||
/.settings
|
||||
/target
|
||||
/.classpath
|
||||
/*.iml
|
||||
@@ -1,5 +0,0 @@
|
||||
/.project
|
||||
/.settings
|
||||
/target
|
||||
/.classpath
|
||||
/*.iml
|
||||
@@ -1,5 +0,0 @@
|
||||
/target
|
||||
/.classpath
|
||||
/.project
|
||||
/.settings
|
||||
/*.iml
|
||||
@@ -1,7 +0,0 @@
|
||||
/target
|
||||
/.classpath
|
||||
/.project
|
||||
/.gradle
|
||||
/.settings
|
||||
/build
|
||||
/*.iml
|
||||
@@ -1,5 +0,0 @@
|
||||
/.project
|
||||
/.settings
|
||||
/target
|
||||
/.classpath
|
||||
/*.iml
|
||||
@@ -1,6 +0,0 @@
|
||||
/target/
|
||||
/dependency-reduced-pom.xml
|
||||
/.settings
|
||||
/.classpath
|
||||
/.project
|
||||
/*.iml
|
||||
@@ -0,0 +1,57 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<parent>
|
||||
<artifactId>maven-framework-project</artifactId>
|
||||
<groupId>net.aimeizi</groupId>
|
||||
<version>1.0.0</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>spring3-testng-example</artifactId>
|
||||
|
||||
|
||||
<properties>
|
||||
<spring.version>3.1.1.RELEASE</spring.version>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<!-- Spring 3 dependencies -->
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-core</artifactId>
|
||||
<version>${spring.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-context</artifactId>
|
||||
<version>${spring.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-test</artifactId>
|
||||
<version>${spring.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- TestNG dependency -->
|
||||
<dependency>
|
||||
<groupId>org.testng</groupId>
|
||||
<artifactId>testng</artifactId>
|
||||
<version>6.4</version>
|
||||
</dependency>
|
||||
|
||||
<!-- Log4j dependency -->
|
||||
<dependency>
|
||||
<groupId>log4j</groupId>
|
||||
<artifactId>log4j</artifactId>
|
||||
<version>1.2.16</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
|
||||
|
||||
</project>
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
package net.aimeizi.spring.testng.example.cache.service;
|
||||
|
||||
import net.aimeizi.spring.testng.example.model.User;
|
||||
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
/**
|
||||
* Created by welcome on 2014/7/1 0001.
|
||||
*/
|
||||
public class CacheService implements ICacheService {
|
||||
|
||||
//User Map is injected...
|
||||
private ConcurrentHashMap<String, User> userMap;
|
||||
|
||||
/**
|
||||
* Gets User Map
|
||||
*
|
||||
* @return ConcurrentHashMap User Map
|
||||
*/
|
||||
public ConcurrentHashMap<String, User> getUserMap() {
|
||||
return userMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets User Map
|
||||
*
|
||||
* @param ConcurrentHashMap User Map
|
||||
*/
|
||||
public void setUserMap(ConcurrentHashMap<String, User> userMap) {
|
||||
this.userMap = userMap;
|
||||
}
|
||||
|
||||
}
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
package net.aimeizi.spring.testng.example.cache.service;
|
||||
|
||||
import net.aimeizi.spring.testng.example.model.User;
|
||||
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
/**
|
||||
* Created by welcome on 2014/7/1 0001.
|
||||
*/
|
||||
public interface ICacheService {
|
||||
|
||||
/**
|
||||
* Gets User Map
|
||||
*
|
||||
* @return ConcurrentHashMap User Map
|
||||
*/
|
||||
ConcurrentHashMap<String, User> getUserMap();
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
package net.aimeizi.spring.testng.example.common.exceptions;
|
||||
|
||||
/**
|
||||
* Created by 冯靖 on 2014/7/1 0001.
|
||||
*/
|
||||
public class NonExistentUserException extends Exception {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public NonExistentUserException(String message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
}
|
||||
+111
@@ -0,0 +1,111 @@
|
||||
package net.aimeizi.spring.testng.example.model;
|
||||
|
||||
/**
|
||||
* Created by 冯靖 on 2014/7/1 0001.
|
||||
*/
|
||||
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;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder strBuilder = new StringBuilder();
|
||||
strBuilder.append("Id : ").append(getId());
|
||||
strBuilder.append(", Name : ").append(getName());
|
||||
strBuilder.append(", Surname : ").append(getSurname());
|
||||
return strBuilder.toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public 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;
|
||||
}
|
||||
|
||||
@Override
|
||||
public 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;
|
||||
}
|
||||
}
|
||||
+51
@@ -0,0 +1,51 @@
|
||||
package net.aimeizi.spring.testng.example.service;
|
||||
|
||||
import net.aimeizi.spring.testng.example.common.exceptions.NonExistentUserException;
|
||||
import net.aimeizi.spring.testng.example.model.User;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
/**
|
||||
* Created by welcome on 2014/7/1 0001.
|
||||
*/
|
||||
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
|
||||
*/
|
||||
Collection<User> getUsers();
|
||||
}
|
||||
+98
@@ -0,0 +1,98 @@
|
||||
package net.aimeizi.spring.testng.example.service;
|
||||
|
||||
import net.aimeizi.spring.testng.example.cache.service.ICacheService;
|
||||
import net.aimeizi.spring.testng.example.common.exceptions.NonExistentUserException;
|
||||
import net.aimeizi.spring.testng.example.model.User;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
/**
|
||||
* Created by welcome on 2014/7/1 0001.
|
||||
*/
|
||||
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 Collection<User> getUsers() {
|
||||
return (Collection<User>) 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;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,196 @@
|
||||
package test;
|
||||
|
||||
import junit.framework.Assert;
|
||||
|
||||
import net.aimeizi.spring.testng.example.common.exceptions.NonExistentUserException;
|
||||
import net.aimeizi.spring.testng.example.model.User;
|
||||
import net.aimeizi.spring.testng.example.service.IUserService;
|
||||
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;
|
||||
|
||||
/**
|
||||
* Created by welcome on 2014/7/1 0001.
|
||||
*/
|
||||
@ContextConfiguration(locations={"classpath:applicationContext.xml"})
|
||||
public class UserServiceTester extends AbstractTestNGSpringContextTests {
|
||||
|
||||
private static Logger logger = Logger.getLogger(UserServiceTester.class);
|
||||
|
||||
@Autowired
|
||||
private 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.
|
||||
*
|
||||
*/
|
||||
@BeforeTest
|
||||
public 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.
|
||||
*
|
||||
*/
|
||||
@BeforeClass
|
||||
public void beforeClass() {
|
||||
logger.debug("BeforeClass method is run...");
|
||||
createUsers();
|
||||
}
|
||||
|
||||
/**
|
||||
* The annotated method will be run before each test method.
|
||||
*
|
||||
*/
|
||||
@BeforeMethod
|
||||
public void beforeMethod() {
|
||||
logger.debug("BeforeMethod method is run...");
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests the process of adding user
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public void addUser() {
|
||||
assertNotNullUserProperties(firstUser);
|
||||
Assert.assertTrue("User can not be added! User : " + firstUser, getUserService().addUser(firstUser));
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests the process of querying user
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public 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
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public 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
|
||||
*
|
||||
*/
|
||||
@Test
|
||||
public 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.
|
||||
*
|
||||
*/
|
||||
@AfterClass
|
||||
public 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.
|
||||
*
|
||||
*/
|
||||
@AfterTest
|
||||
public void afterTest() {
|
||||
logger.debug("AfterTest method is run...");
|
||||
}
|
||||
|
||||
/**
|
||||
* The annotated method will be run after each test method.
|
||||
*
|
||||
*/
|
||||
@AfterMethod
|
||||
public void afterMethod() {
|
||||
logger.debug("AfterMethod method is run...");
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets User Service
|
||||
*
|
||||
* @return IUserService User Service
|
||||
*/
|
||||
public IUserService getUserService() {
|
||||
return userService;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets User Service
|
||||
*
|
||||
* @param userService
|
||||
*/
|
||||
public void setUserService(IUserService userService) {
|
||||
this.userService = userService;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<beans xmlns="http://www.springframework.org/schema/beans"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.springframework.org/schema/beans
|
||||
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
|
||||
|
||||
<!-- User Map Declaration -->
|
||||
<bean id="UserMap" class="java.util.concurrent.ConcurrentHashMap"/>
|
||||
|
||||
<!-- Cache Service Declaration -->
|
||||
<bean id="CacheService" class="net.aimeizi.spring.testng.example.cache.service.CacheService">
|
||||
<property name="userMap" ref="UserMap"/>
|
||||
</bean>
|
||||
|
||||
<!-- User Service Declaration -->
|
||||
<bean id="UserService" class="net.aimeizi.spring.testng.example.service.UserService">
|
||||
<property name="cacheService" ref="CacheService"/>
|
||||
</bean>
|
||||
</beans>
|
||||
Reference in New Issue
Block a user