无涯教程-JUnit - 编写测试

17 阅读2分钟

在这里,无涯教程将看到一个使用POJO类,业务逻辑类和一个测试类进行JUnit测试的完整示例,该类将由测试运行程序运行。

在C:\> JUNIT_WORKSPACE中创建EmployeeDetails.java,这是一个POJO类。

public class EmployeeDetails {

private String name; private double monthlySalary; private int age;

/**

  • @return the name */

public String getName() { return name; }

/**

  • @param name the name to set */

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

/**

  • @return the monthlySalary */

public double getMonthlySalary() { return monthlySalary; }

/**

  • @param monthlySalary the monthlySalary to set */

public void setMonthlySalary(double monthlySalary) { this.monthlySalary = monthlySalary; }

/**

  • @return the age */ public int getAge() { return age; }

/**

  • @param age the age to set */ public void setAge(int age) { this.age = age; } }

在C:\> JUNIT_WORKSPACE中创建一个名为EmpBusinessLogic.java的文件,其中包含业务逻辑。

public class EmpBusinessLogic {
   //计算员工的年薪
   public double calculateYearlySalary(EmployeeDetails employeeDetails) {
      double yearlySalary = 0;
      yearlySalary = employeeDetails.getMonthlySalary() * 12;
      return yearlySalary;
   }

//计算员工的评估金额 public double calculateAppraisal(EmployeeDetails employeeDetails) { double appraisal = 0;

  </span><span class="kwd">if</span><span class="pun">(</span><span class="pln">employeeDetails</span><span class="pun">.</span><span class="pln">getMonthlySalary</span><span class="pun">()</span><span class="pln"> </span><span class="pun">&lt;</span><span class="pln"> </span><span class="lit">10000</span><span class="pun">){</span><span class="pln">
     appraisal </span><span class="pun">=</span><span class="pln"> </span><span class="lit">500</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="kwd">else</span><span class="pun">{</span><span class="pln">
     appraisal </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1000</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
	
  </span><span class="kwd">return</span><span class="pln"> appraisal</span><span class="pun">;</span><span class="pln">

} }

在C:\> JUNIT_WORKSPACE中创建一个名为TestEmployeeDetails.java的文件,其中包含要测试的测试用例。

import org.junit.Test;
import static org.junit.Assert.assertEquals;

public class TestEmployeeDetails { EmpBusinessLogic empBusinessLogic = new EmpBusinessLogic(); EmployeeDetails employee = new EmployeeDetails();

//测试检查评估 @Test public void testCalculateAppriasal() { employee.setName("Rajeev"); employee.setAge(25); employee.setMonthlySalary(8000);

  </span><span class="kwd">double</span><span class="pln"> appraisal </span><span class="pun">=</span><span class="pln"> empBusinessLogic</span><span class="pun">.</span><span class="pln">calculateAppraisal</span><span class="pun">(</span><span class="pln">employee</span><span class="pun">);</span><span class="pln">
  assertEquals</span><span class="pun">(</span><span class="lit">500</span><span class="pun">,</span><span class="pln"> appraisal</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0.0</span><span class="pun">);</span><span class="pln">

}

//测试检查年薪 @Test public void testCalculateYearlySalary() { employee.setName("Rajeev"); employee.setAge(25); employee.setMonthlySalary(8000);

  </span><span class="kwd">double</span><span class="pln"> salary </span><span class="pun">=</span><span class="pln"> empBusinessLogic</span><span class="pun">.</span><span class="pln">calculateYearlySalary</span><span class="pun">(</span><span class="pln">employee</span><span class="pun">);</span><span class="pln">
  assertEquals</span><span class="pun">(</span><span class="lit">96000</span><span class="pun">,</span><span class="pln"> salary</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0.0</span><span class="pun">);</span><span class="pln">

} }

接下来,在C:\> JUNIT WORKSPACE中创建一个名为TestRunner.java的Java类字段以执行测试用例。

import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;

public class TestRunner { public static void main(String[] args) { Result result = JUnitCore.runClasses(TestEmployeeDetails.class);

  </span><span class="kwd">for</span><span class="pln"> </span><span class="pun">(</span><span class="typ">Failure</span><span class="pln"> failure </span><span class="pun">:</span><span class="pln"> result</span><span class="pun">.</span><span class="pln">getFailures</span><span class="pun">())</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
     </span><span class="typ">System</span><span class="pun">.</span><span class="kwd">out</span><span class="pun">.</span><span class="pln">println</span><span class="pun">(</span><span class="pln">failure</span><span class="pun">.</span><span class="pln">toString</span><span class="pun">());</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
	
  </span><span class="typ">System</span><span class="pun">.</span><span class="kwd">out</span><span class="pun">.</span><span class="pln">println</span><span class="pun">(</span><span class="pln">result</span><span class="pun">.</span><span class="pln">wasSuccessful</span><span class="pun">());</span><span class="pln">

} }

使用javac编译测试用例和Test Runner类。

C:\JUNIT_WORKSPACE>javac EmployeeDetails.java 
EmpBusinessLogic.java TestEmployeeDetails.java TestRunner.java

现在运行Test Runner,它将运行在提供的Test Case类中定义的测试用例。

C:\JUNIT_WORKSPACE>java TestRunner

验证输出。

true

参考链接

www.learnfk.com/junit/junit…