Saturday 17 March 2018

Hamcrest: comparesEqualTo: Check objects equality

By using 'comparesEqualTo' method, you can create a matcher of Comparable object that matches when the examined object is equal to the specified object.

Ex
assertThat("2 == ", 2, comparesEqualTo(2));

Find below working application.

TestApp.java
package com.sample.tests;

import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.comparesEqualTo;

import org.junit.Test;

public class TestApp {

 @Test
 public void testmethod() {
  assertThat("2 == ", 2, comparesEqualTo(2));
 }
}

As you see the signature of comparesEqualTo method, you can call this method on any Comparable instances.

public static <T extends java.lang.Comparable<T>> org.hamcrest.Matcher<T> comparesEqualTo(T value)

Let us try to compare whether two employees are equal or not based on their experience in the organization.

public class Employee implements Comparable<Employee> {
         ....
         ....
        
         public int compareTo(Employee emp) {
                  if (emp == null)
                           return 1;

                  return this.experience.compareTo(emp.experience);
         }

}

Since Employee class is implementing Comparable interface, we can use comparesEqualTo matcher to compare two employee objects.

Ex
Employee emp1 = new Employee(1, "Krishna", 5.6);
Employee emp2 = new Employee(2, "Chamu", 65.6);
                 
assertThat("emp1 and emp2 must have same experience", emp1, comparesEqualTo(emp2));

Find below working application.

Employee.java
package com.sample.model;

public class Employee implements Comparable<Employee> {
 private int id;
 private String name;
 private Double experience;

 public Employee(int id, String name, Double experience) {
  this.id = id;
  this.name = name;
  this.experience = experience;
 }

 public int getId() {
  return id;
 }

 public void setId(int id) {
  this.id = id;
 }

 public String getName() {
  return name;
 }

 public void setName(String name) {
  this.name = name;
 }

 public double getExperience() {
  return experience;
 }

 public void setExperience(double experience) {
  this.experience = experience;
 }

 public int compareTo(Employee emp) {
  if (emp == null)
   return 1;

  return this.experience.compareTo(emp.experience);
 }

}


TestApp.java
package com.sample.tests;

import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.comparesEqualTo;

import org.junit.Test;

import com.sample.model.Employee;

public class TestApp {

 @Test
 public void testmethod() {
  Employee emp1 = new Employee(1, "Krishna", 5.6);
  Employee emp2 = new Employee(2, "Chamu", 65.6);
  
  assertThat("emp1 and emp2 must have same experience", emp1, comparesEqualTo(emp2));
 }
}






Previous                                                 Next                                                 Home

No comments:

Post a Comment