JUnit Assertequals示例

时间:2020-02-23 14:41:31  来源:igfitidea点击:

JUNIT 5的org.junit.jupiter.Assertions类提供了不同的静态断言方法来编写测试用例。

请注意,在JUnit 4或者JUnit 3的情况下,我们需要使用JUNIT的org.junit.assert类来使用ASSEREQUALS方法来声明。

assertequals使用

Assertions.Astequals()检查预期,实际等等。
如果两者都不等于,它将通过asserterror。
另请注意,如果两者都为空,则被认为是相等的。

调用Assertequals(Object1,Object2)时,它使用该类型对象的等于方法。

例如:如果Object1和Object2是字符串类型,则将调用String的等于方法以确定平等关系。

String str1="Netherlands";
String str2=new String("Netherlands")
Assertions.assertEquals(str1,str2);

在自定义对象的情况下,它将使用自定义对象的等于方法来确定平等。
如果,它不会覆盖等于方法,它将使用对象类的默认行为:对象标识。

如果Object1和Object2是诸如Boolean,Int,Long和Object1和Object2将使用对应包装类和Object1.equals(Object2)。

浮点数断言

当我们想比较double和float等浮点型数据时,我们应该始终使用另外的参数Δ,以避免在比较浮点的同时舍入问题。

public static void assertEquals(double expected, double actual, double delta)

assertequals 重载方法

public static void assertEquals(short expected,short actual)
public static void assertEquals(short expected, short actual,String message)
public static void assertEquals(short expected,short actual,Supplier messageSupplier)public static void assertEquals(byte expected,byte actual)
public static void assertEquals(byte expected, byte actual,String message)
public static void assertEquals(byte expected,byte actual,Supplier messageSupplier)public static void assertEquals(int expected,int actual)
public static void assertEquals(int expected, int actual,String message)
public static void assertEquals(int expected,int actual,Supplier messageSupplier)public static void assertEquals(long expected,long actual)
public static void assertEquals(long expected, long actual,String message)
public static void assertEquals(long expected,long actual,Supplier messageSupplier)
public static void assertEquals(char expected,char actual)
public static void assertEquals(char expected, char actual,String message)
public static void assertEquals(char expected,char actual,Supplier messageSupplier)

public static void assertEquals(float expected,float actual)
public static void assertEquals(float expected, float actual,String message)
public static void assertEquals(float expected,float actual,Supplier messageSupplier)
public static void assertEquals(float expected, float actual, float delta)
public static void assertEquals(float expected, float actual, float delta, String message)
public static void assertEquals(float expected, float actual, float delta, Supplier messageSupplier)

public static void assertEquals(double expected,double actual)
public static void assertEquals(double expected, double actual,String message)
public static void assertEquals(double expected,double actual,Supplier messageSupplier)
public static void assertEquals(double expected, double actual, double delta)
public static void assertEquals(double expected, double actual, double delta, String message)
public static void assertEquals(double expected, double actual, double delta, Supplier messageSupplier)

public static void assertEquals(Object expected,Object actual)
public static void assertEquals(Object expected, Object actual,String message)
public static void assertEquals(Object expected,Object actual,Supplier messageSupplier)

assertequals例子

这是一个简单的例子

package org.igi.theitroad;
 
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
 
public class AssertEqualsTest {
 
	AssertEqualsTest aet;
	
	@BeforeEach
	public void beforeEachTest()
	{
		aet = new AssertEqualsTest();
	}
	
	public double getSquareRoot(double num)
	{
		return Math.sqrt(num);
	}
     
    /*
     * Examples for assertEquals
     */
    
    //public static void assertEquals(double expected, double actual,String message)
    @Test
    public void testSquareRootOf25(){
    	double squareRoot25 = aet.getSquareRoot(25.0);
    	Assertions.assertEquals(5.0, squareRoot25,"5 should be sqaure root of 25");
    }
    
  //public static void assertEquals(double expected, double actual,String message)
    @Test
    public void testSquareRootOf5(){
    	double squareRoot5 = aet.getSquareRoot(5.0);
    	Assertions.assertEquals(2.236, squareRoot5,"Square root of 5 is incorrect");
    }
    
  //public static void assertEquals(double expected, double actual,double delta, String message)
    @Test
    public void testSquareRootOf5WithDelta(){
    	double squareRoot5 = aet.getSquareRoot(5.0);
    	Assertions.assertEquals(2.236, squareRoot5,0.001,"Square root of 5 is incorrect");
    }
}

运行上面的TestCase时,我们将得到以下输出:

让我们了解每个测试用例的输出:

testsquarerootof25 - Pass

AS 5应该是25的平方根,所以该测试案例将通过。

testsquarerootof5 - Fail

作为5的平方根为2.23606797749979,而不是2.236,所以这个测试柜将失败。

testsquarerootof5withdelta - Pass

作为5的平方根为2.23606797749979在0.000的达达范围内,相对于2.236,所以该测试箱将通过。

JUNIT AssErchals自定义对象示例让我们使用AssEstequ来比较自定义对象。

创建一个名为国家的简单类。

package org.igi.theitroad.model;
 
public class Country{
	
	String name;
	long population;
	
	public Country(String name, long population) {
		super();
		this.name = name;
		this.population = population;
	}
	
	
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((name == null) ? 0 : name.hashCode());
		result = prime * result + (int) (population ^ (population >>> 32));
		return result;
	}
 
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Country other = (Country) obj;
		if (name == null) {
			if (other.name != null)
				return false;
		} else if (!name.equals(other.name))
			return false;
		if (population != other.population)
			return false;
		return true;
	}
 
	@Override
	public String toString() {
		return name +"-"+population;
	}
 
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public long getPopulation() {
		return population;
	}
	public void setPopulation(long population) {
		this.population = population;
	}
}

创建另一个名为countryhelper的类,该载重器有一种返回最高人口普利的国家的方法。
这是我们要测试的方法。

package org.igi.theitroad.model;
 
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
 
public class CountryHelper {
 
	public Country getHighestPopulatedCountry(List countries)
	{
		Collections.sort(countries, new Comparator() {
 
			@Override
			public int compare(Country c1, Country c2) {
				return ((Long)c2.getPopulation()).compareTo(c1.getPopulation());
			}
		});
		return countries.get(0);
	}
	
}

让我们现在创建测试箱。

package org.igi.theitroad;
 
import static org.junit.jupiter.api.Assertions.assertEquals;
 
import java.util.ArrayList;
import java.util.List;
 
import org.igi.theitroad.model.Country;
import org.igi.theitroad.model.CountryHelper;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
 
public class AssertEqualCustomObjectTest {
 
    CountryHelper ch;
    
    @BeforeEach
    public void beforeEachTest()
    {
        ch=new CountryHelper();
    }
    
    @Test
    public void testHighestPopulatedCountry(){
        
        Country Netherlands=new Country("Netherlands",20000);
        Country china=new Country("China",40000);
        Country bhutan=new Country("Bhutan",3000);
        Country nepal=new Country("Nepal",7000);
        List<Country> countries=new ArrayList<Country>();
        countries.add(Netherlands);
        countries.add(china);
        countries.add(bhutan);
        countries.add(nepal);
    
        assertEquals(china, ch.getHighestPopulatedCountry(countries));
        
    }
}