В данной статье мы рассмотрим базовые принципы написания тестов. Мы создадим POJO класс, класс с его бизнес-логикой и, непосредственно, тестовый класс.
Создадим пакет developer
Создадим простой POJO (Plain Old Java Object) класс Developer.java
package net.proselyte.tutorials.junit.developer;
import java.util.Currency;
/**
* Simple JavaBean domain object that represents a Developer
*
* @author Eugene Suliemanov
* @version 1.0
*/
public class Developer {
private String firsName;
private String lastName;
private String specialty;
private int salary;
public Developer() {
}
public Developer(String firsName, String lastName, String specialty, int salary) {
this.firsName = firsName;
this.lastName = lastName;
this.specialty = specialty;
this.salary = salary;
}
public String getFirsName() {
return firsName;
}
public void setFirsName(String firsName) {
this.firsName = firsName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getSpecialty() {
return specialty;
}
public void setSpecialty(String specialty) {
this.specialty = specialty;
}
public int getSalary() {
return salary;
}
public void setSalary(int salary) {
this.salary = salary;
}
@Override
public String toString() {
return "Firs Name: " + firsName +
"\nLast Name: " + lastName +
"\nSpecialty:" + specialty +
"\nSalary: $" + salary / 100 + "." + salary % 100;
}
}
Класс DeveloperLogic.java
package net.proselyte.tutorials.junit.developer;
/**
* Business logic for class {@link Developer}
*
* @author Eugene Suliemanov
* @version 1.0
*/
public class DeveloperLogic {
public int calculateHourRate(Developer developer) {
return developer.getSalary() / 20 / 8;
}
public int calculateAnnualSalary(Developer developer) {
return developer.getSalary() * 12;
}
}
Данный класс, вычисляет часовую ставку и годовой доход разработчика.
Создадим тестовый класс DeveloperTests.java
package net.proselyte.tutorials;
import net.proselyte.tutorials.junit.developer.Developer;
import net.proselyte.tutorials.junit.developer.DeveloperLogic;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
/**
* Test class for class {@link Developer}
*
* @author Eugene Suliemanov
* @version 1.0
*/
public class DeveloperTests {
Developer developer = new Developer();
DeveloperLogic logic = new DeveloperLogic();
@Before
public void setUp(){
developer.setFirsName("Simple");
developer.setLastName("Developer");
developer.setSpecialty("Java");
developer.setSalary(2000_00);
}
@Test
public void shouldCreateDeveloperInstanceTest(){
assertEquals("Simple", developer.getFirsName());
assertEquals("Developer", developer.getLastName());
assertEquals("Specialty", developer.getSpecialty());
assertEquals(2000_00, developer.getSalary());
}
@Test
public void shouldCalculateAnnualSalaryTest(){
assertEquals(24_000_00, logic.calculateAnnualSalary(developer));
}
@Test
public void shouldCalculateHourRateTest(){
assertEquals(12, logic.calculateHourRate(developer));
}
}
Метод shouldCreateDeveloperInstanceTest() проверяет работу getters и setters.
Метод shouldCalculateAnnualSalaryTest() проверяет корректность вычисления годового дохода разработчика.
Метод shouldCalculateHourRateTest() проверяет правильность вычисления часовой ставки разработчика.
В результате работы данного теста, мы получим следующий результат:
На этом мы заканчиваем рассмотрение базовых принципов написания тестов.
В следующей статье мы рассмотрим использование утверждений в JUnit Framework.