easymock argument matchers
This commit is contained in:
parent
be163752ab
commit
845db90349
|
@ -0,0 +1,11 @@
|
|||
package com.baeldung.easymock;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface IUserService {
|
||||
public boolean addUser(User user);
|
||||
public List<User> findByFirstName(String firstName);
|
||||
public List<User> findByLastName(String lastName);
|
||||
public List<User> findByAge(double age);
|
||||
public List<User> findByEmail(String email);
|
||||
}
|
|
@ -0,0 +1,109 @@
|
|||
package com.baeldung.easymock;
|
||||
|
||||
public class User {
|
||||
private long id;
|
||||
private String firstName;
|
||||
private String lastName;
|
||||
private double age;
|
||||
private String email;
|
||||
|
||||
public User() {
|
||||
super();
|
||||
}
|
||||
|
||||
public User(String firstName, String lastName) {
|
||||
super();
|
||||
this.firstName = firstName;
|
||||
this.lastName = lastName;
|
||||
}
|
||||
|
||||
//
|
||||
|
||||
public long getId() {
|
||||
return id;
|
||||
}
|
||||
public void setId(long id) {
|
||||
this.id = id;
|
||||
}
|
||||
public String getFirstName() {
|
||||
return firstName;
|
||||
}
|
||||
public void setFirstName(String firstName) {
|
||||
this.firstName = firstName;
|
||||
}
|
||||
public String getLastName() {
|
||||
return lastName;
|
||||
}
|
||||
public void setLastName(String lastName) {
|
||||
this.lastName = lastName;
|
||||
}
|
||||
public double getAge() {
|
||||
return age;
|
||||
}
|
||||
public void setAge(double age) {
|
||||
this.age = age;
|
||||
}
|
||||
public String getEmail() {
|
||||
return email;
|
||||
}
|
||||
public void setEmail(String email) {
|
||||
this.email = email;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
final int prime = 31;
|
||||
int result = 1;
|
||||
long temp;
|
||||
temp = Double.doubleToLongBits(age);
|
||||
result = prime * result + (int) (temp ^ (temp >>> 32));
|
||||
result = prime * result + ((email == null) ? 0 : email.hashCode());
|
||||
result = prime * result + ((firstName == null) ? 0 : firstName.hashCode());
|
||||
result = prime * result + (int) (id ^ (id >>> 32));
|
||||
result = prime * result + ((lastName == null) ? 0 : lastName.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 (Double.doubleToLongBits(age) != Double.doubleToLongBits(other.age)) {
|
||||
return false;
|
||||
}
|
||||
if (email == null) {
|
||||
if (other.email != null) {
|
||||
return false;
|
||||
}
|
||||
} else if (!email.equals(other.email)) {
|
||||
return false;
|
||||
}
|
||||
if (firstName == null) {
|
||||
if (other.firstName != null) {
|
||||
return false;
|
||||
}
|
||||
} else if (!firstName.equals(other.firstName)) {
|
||||
return false;
|
||||
}
|
||||
if (id != other.id) {
|
||||
return false;
|
||||
}
|
||||
if (lastName == null) {
|
||||
if (other.lastName != null) {
|
||||
return false;
|
||||
}
|
||||
} else if (!lastName.equals(other.lastName)) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,220 @@
|
|||
package com.baeldung.easymock;
|
||||
|
||||
import static org.easymock.EasyMock.and;
|
||||
import static org.easymock.EasyMock.anyString;
|
||||
import static org.easymock.EasyMock.contains;
|
||||
import static org.easymock.EasyMock.endsWith;
|
||||
import static org.easymock.EasyMock.eq;
|
||||
import static org.easymock.EasyMock.expect;
|
||||
import static org.easymock.EasyMock.geq;
|
||||
import static org.easymock.EasyMock.gt;
|
||||
import static org.easymock.EasyMock.isA;
|
||||
import static org.easymock.EasyMock.isNull;
|
||||
import static org.easymock.EasyMock.lt;
|
||||
import static org.easymock.EasyMock.matches;
|
||||
import static org.easymock.EasyMock.mock;
|
||||
import static org.easymock.EasyMock.not;
|
||||
import static org.easymock.EasyMock.notNull;
|
||||
import static org.easymock.EasyMock.replay;
|
||||
import static org.easymock.EasyMock.same;
|
||||
import static org.easymock.EasyMock.startsWith;
|
||||
import static org.easymock.EasyMock.verify;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import org.easymock.EasyMock;
|
||||
import org.easymock.IArgumentMatcher;
|
||||
import org.junit.Test;
|
||||
|
||||
public class ArgumentMatchersUnitTest {
|
||||
|
||||
private IUserService userService = mock(IUserService.class);
|
||||
|
||||
//====================== equals
|
||||
@Test
|
||||
public void givenUserService_whenAddNewUser_thenOK() {
|
||||
expect(userService.addUser(eq(new User()))).andReturn(true);
|
||||
replay(userService);
|
||||
|
||||
boolean result = userService.addUser(new User());
|
||||
verify(userService);
|
||||
assertTrue(result);
|
||||
}
|
||||
|
||||
//================ same
|
||||
@Test
|
||||
public void givenUserService_whenAddSpecificUser_thenOK() {
|
||||
User user = new User();
|
||||
|
||||
expect(userService.addUser(same(user))).andReturn(true);
|
||||
replay(userService);
|
||||
|
||||
boolean result = userService.addUser(user);
|
||||
verify(userService);
|
||||
assertTrue(result);
|
||||
}
|
||||
|
||||
//============= anyX
|
||||
@Test
|
||||
public void givenUserService_whenSearchForUserByFirstName_thenFound() {
|
||||
expect(userService.findByFirstName(anyString())).andReturn(Collections.emptyList());
|
||||
replay(userService);
|
||||
|
||||
List<User> result = userService.findByFirstName("joe");
|
||||
verify(userService);
|
||||
assertEquals(0,result.size());
|
||||
}
|
||||
|
||||
//================= isA
|
||||
@Test
|
||||
public void givenUserService_whenAddUser_thenOK() {
|
||||
expect(userService.addUser(isA(User.class))).andReturn(true);
|
||||
replay(userService);
|
||||
|
||||
boolean result = userService.addUser(new User());
|
||||
verify(userService);
|
||||
assertTrue(result);
|
||||
}
|
||||
|
||||
//=================== null, not null
|
||||
@Test
|
||||
public void givenUserService_whenAddNull_thenFail() {
|
||||
expect(userService.addUser(isNull())).andReturn(false);
|
||||
replay(userService);
|
||||
|
||||
boolean result = userService.addUser(null);
|
||||
verify(userService);
|
||||
assertFalse(result);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenUserService_whenAddNotNull_thenOK() {
|
||||
expect(userService.addUser(notNull())).andReturn(true);
|
||||
replay(userService);
|
||||
|
||||
boolean result = userService.addUser(new User());
|
||||
verify(userService);
|
||||
assertTrue(result);
|
||||
}
|
||||
|
||||
// number less,great
|
||||
@Test
|
||||
public void givenUserService_whenSearchForUserByAgeLessThan_thenFound() {
|
||||
expect(userService.findByAge(lt(100.0))).andReturn(Collections.emptyList());
|
||||
replay(userService);
|
||||
|
||||
List<User> result = userService.findByAge(20);
|
||||
verify(userService);
|
||||
assertEquals(0,result.size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenUserService_whenSearchForUserByAgeGreaterThan_thenFound() {
|
||||
expect(userService.findByAge(geq(10.0))).andReturn(Collections.emptyList());
|
||||
replay(userService);
|
||||
|
||||
List<User> result = userService.findByAge(20);
|
||||
verify(userService);
|
||||
assertEquals(0,result.size());
|
||||
}
|
||||
|
||||
//=============== string
|
||||
//=============== start
|
||||
@Test
|
||||
public void givenUserService_whenSearchForUserByEmailStartsWith_thenFound() {
|
||||
expect(userService.findByEmail(startsWith("test"))).andReturn(Collections.emptyList());
|
||||
replay(userService);
|
||||
|
||||
List<User> result = userService.findByEmail("test@example.com");
|
||||
verify(userService);
|
||||
assertEquals(0,result.size());
|
||||
}
|
||||
|
||||
//==================end
|
||||
@Test
|
||||
public void givenUserService_whenSearchForUserByEmailEndsWith_thenFound() {
|
||||
expect(userService.findByEmail(endsWith(".com"))).andReturn(Collections.emptyList());
|
||||
replay(userService);
|
||||
|
||||
List<User> result = userService.findByEmail("test@example.com");
|
||||
verify(userService);
|
||||
assertEquals(0,result.size());
|
||||
}
|
||||
|
||||
//=================contain
|
||||
@Test
|
||||
public void givenUserService_whenSearchForUserByEmailContains_thenFound() {
|
||||
expect(userService.findByEmail(contains("@"))).andReturn(Collections.emptyList());
|
||||
replay(userService);
|
||||
|
||||
List<User> result = userService.findByEmail("test@example.com");
|
||||
verify(userService);
|
||||
assertEquals(0,result.size());
|
||||
}
|
||||
|
||||
//==================matches
|
||||
@Test
|
||||
public void givenUserService_whenSearchForUserByEmailMatches_thenFound() {
|
||||
expect(userService.findByEmail(matches(".+\\@.+\\..+"))).andReturn(Collections.emptyList());
|
||||
replay(userService);
|
||||
|
||||
List<User> result = userService.findByEmail("test@example.com");
|
||||
verify(userService);
|
||||
assertEquals(0,result.size());
|
||||
}
|
||||
|
||||
//================== combine and, or, not
|
||||
@Test
|
||||
public void givenUserService_whenSearchForUserByAgeRange_thenFound() {
|
||||
expect(userService.findByAge(and(gt(10.0),lt(100.0)))).andReturn(Collections.emptyList());
|
||||
replay(userService);
|
||||
|
||||
List<User> result = userService.findByAge(20);
|
||||
verify(userService);
|
||||
assertEquals(0,result.size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenUserService_whenSearchForUserByEmailNotEndsWith_thenFound() {
|
||||
expect(userService.findByEmail(not(endsWith(".com")))).andReturn(Collections.emptyList());
|
||||
replay(userService);
|
||||
|
||||
List<User> result = userService.findByEmail("test@example.org");
|
||||
verify(userService);
|
||||
assertEquals(0,result.size());
|
||||
}
|
||||
|
||||
//================ custom matcher
|
||||
|
||||
@Test
|
||||
public void givenUserService_whenSearchForUserByLastName_thenFound() {
|
||||
expect(userService.findByLastName(charCount(3))).andReturn(Collections.emptyList());
|
||||
replay(userService);
|
||||
|
||||
List<User> result = userService.findByLastName("doe");
|
||||
verify(userService);
|
||||
assertEquals(0,result.size());
|
||||
}
|
||||
|
||||
public static String charCount(int value){
|
||||
EasyMock.reportMatcher(new IArgumentMatcher() {
|
||||
@Override
|
||||
public boolean matches(Object argument) {
|
||||
return argument instanceof String
|
||||
&& ((String) argument).length() == value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void appendTo(StringBuffer buffer) {
|
||||
buffer.append("charCount(\"" + value + "\")");
|
||||
}
|
||||
});
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue