当前位置: 首页 > 知识库问答 >
问题:

Junit5如何计算UnitTest中的员工

锺离珂
2023-03-14

所以我有3个包,实现,接口和测试。我想把这个功能写进员工的小程序,这样我的单元测试在Test员工的小程序上运行时就不会出错。但是,我不确定如何编写get雇员计数,因为它在单元测试中失败。我试图通过创建int计数来解决它,但它不起作用。我知道我需要使用数组列表来计算员工的数量,但是我不能想出一个解决方案,我也找不到任何像我的单元测试一样的代码示例。如果有人能帮忙,将不胜感激。

//EmployeeImp

import java.util.ArrayList;
import java.util.List;

import interfaces.Employer;
import interfaces.Person;

public class EmployerImpl implements Employer {
    
    private String name;
    private List<Person> employees;
    private int count;


    public EmployerImpl(String n) {
        //gets name
        this.name = n;
        //Array List
        employees = new ArrayList<Person>();
        // TODO Auto-generated constructor stub
    }

    @Override
    public void hire(Person p, String title, double salary) {
        p.setJob(null);
        employees.add(p);

    }

    @Override
    public List<Person> getEmployees() {
        //Returns Employees in a List
        return employees;
    }

    @Override
    public int getEmployeeCount() {
        return this.count;
        //Returns employees size
        
        
    }

    @Override
    public boolean fire(Person p) {
        // TODO Auto-generated method stub
        return false;
    }

    @Override
    public String getName() {
        //returns name
        return name;
    }

    @Override
    public boolean isEmployed(Person p) {
        // TODO Auto-generated method stub
        return false;
    }

    @Override
    public Person getHighestPaid() {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public Person getLowestPaid() {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public double getStaffCost() {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public int getCountOf(String title) {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public List<Person> getAll(String title) {
        // TODO Auto-generated method stub
        return null;
    }

}
//Employer.java
import java.util.List;

public interface Employer {

    void hire(Person p, String title, double salary);
    List<Person> getEmployees();
    int getEmployeeCount();
    boolean fire(Person p);
    String getName();
    boolean isEmployed(Person p);
    Person getHighestPaid();
    Person getLowestPaid();
    double getStaffCost();
    int getCountOf(String title);
    List<Person> getAll(String title);
}

//TestEmployeeImp

import static org.junit.jupiter.api.Assertions.*;

import java.util.ArrayList;
import java.util.List;

import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

import implementation.EmployerImpl;
import implementation.PersonImpl;
import interfaces.Employer;
import interfaces.Person;

class TestEmployerImpl {

    private Employer e;
    private Person highest;
    private Person lowest;
    
    @BeforeEach
    void setUp() throws Exception {
        e = new EmployerImpl("NCCO");
        lowest = new PersonImpl("John", 18);
        e.hire(lowest, "Lab Assistant", 20000);
        highest = new PersonImpl("Anu", 50);
        e.hire(highest, "Best Teacher", 80000);
        e.hire(new PersonImpl("Damien", 18), "Teacher", 41000);
        e.hire(new PersonImpl("Malachy", 45), "Teacher", 50000);
        
    }

    @Test
    void testGetEmployees() {
        List<Person> l = e.getEmployees();
        assertNotNull(l);
        assertEquals(4, l.size());
    }

    @Test
    void testGetEmployeeCount() {
        assertEquals(4, e.getEmployeeCount());
        Person p = new PersonImpl("Paul H", 50);
        e.hire(p, "teacher", 1000);
        assertEquals(5, e.getEmployeeCount());
        e.fire(p);
        assertEquals(4, e.getEmployeeCount());
    }

    @Test
    void testFire() {
        Person p = new PersonImpl("Damien", 18);
        boolean f= e.fire(p);
        assertTrue(f);
        assertEquals(3, e.getEmployeeCount());
        
        p = new PersonImpl("Danika", 23);
        f = e.fire(p);
        assertFalse(f);
    }

    @Test
    void testGetName() {
        assertEquals("NCCO", e.getName());
    }

    @Test
    void testIsEmployed() {
        Person p = new PersonImpl("Damien", 18);
        assertTrue(e.isEmployed(p));
        
        p = new PersonImpl("Danika", 23);
        assertFalse(e.isEmployed(p));
    }
    
    @Test
    public void testGetHighestPaid() {
        assertEquals(highest, e.getHighestPaid());
    }

    @Test
    void getLowestPaid() {
        assertEquals(lowest, e.getLowestPaid());
    }

    @Test
    void getStaffCost() {
        assertEquals(191000, e.getStaffCost());
    }
    
    @Test
    void testGetCountOf() {
        assertEquals(2, e.getCountOf("Teacher"));
        assertEquals(0, e.getCountOf("Awesome Teacher"));
    }
    
    @Test 
    void testGetAll(){
        assertEquals(2, e.getAll("Teacher").size());
        assertNotNull(e.getAll("Dean"));
        assertTrue(e.getAll("Dean").isEmpty());
    }

}

共有1个答案

蒯卓君
2023-03-14

我看不到任何初始化或递增的代码。但是正如你所说,你不需要Count变量,只需在员工列表中使用size()方法

@Override
public int getEmployeeCount() {
    return this.employees.size();
}
 类似资料:
  • 公共静态员工getEmployeeDetails()--它获取员工的详细信息-id、姓名和工资,并返回Employee对象。 public static int getpfpercentry()-它获取PF百分比并返回相同的 在main方法中调用上述两个方法,然后调用Employee类中的calculateNetSalary方法并打印输出,如下所示。 输入ID:101输入姓名:Vivek输入工资:

  • 由于hive只支持从类集中的子查询,如select*from(subquery),也只支持equjo,因此我们如何从表中计算累积工资,如表员工有记录如下。 因此输出应该如下所示 我怎么能在蜂巢里做到这一点

  • 我的工作对象是: SpringMVC测试 汉克雷斯特 JsonPath 我对服务器的响应有以下几点看法: 以下工作符合预期(有效): 我需要测试是1。确认存在1项。它再次确认以下内容: 我试过: 观察和

  • 如何使用约束流api计算员工的公平性。 https://www.optaplanner.org/blog/2017/02/03/FormulaForMeasuringUnfairness.html 我在网球求解器示例中看到了上述流口水的实现。 https://github.com/kiegroup/optaplanner/blob/581d10fb8140f37b7491d06b2bab8d5ac

  • 问题内容: 例如 : 如何使用mysql计数此表的列? 问题答案:

  • 我知道在一堂课上 我可以在初始值设定项列表中初始化,如下所示: 但是,如果计算所需的数据来自字符串并且可能涉及计算,那么从第二个构造函数初始化的正确方法是什么?