JUnit - должен возвращать ошибку коллекции массивов

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;
    }
}

Как передать список EmployeeDetails.class в параметризованный класс JUnit.

Пожалуйста, помогите мне написать метод Parameters

@Parameters
public static Collection employeeList()
{
    List<EmployeeDetails> employees = new ArrayList<EmployeeDetails>;
    return employees;
}

// Это выдает ошибку типа "employeeList должен возвращать коллекцию массивов."

Класс EmployeeDetails выше приведен для примера. Мне нужно использовать его для аналогичного класса, куда я отправлю список объектов класса.


person Rajagopal    schedule 26.08.2014    source источник


Ответы (3)


Ваш метод @Parameters должен возвращать набор массивов объектов. Итак, предположим, что ваш конструктор тестовых случаев просто ожидает один объект EmployeeDetails, сделайте следующее:

@Parameters
public static Collection<Object[]> employeeList() {
    List<EmployeeDetails> employees = new ArrayList<>();
    // fill this list

    Collection<Object[]> result = new ArrayList<>();
    for (EmployeeDetails e : employees) {
        result.add(new Object[] { e });
    }
    return result;
}
person Duncan Jones    schedule 26.08.2014

Если вы можете использовать статические конструкторы, вы можете быть намного лаконичнее в своей настройке.

@Parameterized.Parameters
public static Collection<Object[]> params() {
  return Arrays.asList(new Object[][] {
      { 0, "a" },
      { 1, "b" },
      { 3, "c" },
  });
}
person stevel    schedule 06.03.2017

Коллекция является универсальным типом, вы должны указать тип возвращаемого Collection<E>, где E — тип, здесь он должен быть EmployeeDetails

ваш код должен выглядеть так:

public static Collection<EmployeeDetails> employeeList()
{
List<EmployeeDetails> employees = new ArrayList<EmployeeDetails>();
return employees;
}

или просто

public static Collection<?> employeeList()
{
List<EmployeeDetails> employees = new ArrayList<EmployeeDetails>();
return employees;
}
person monim    schedule 26.08.2014
comment
зачем минусовать? пожалуйста, оставьте комментарии - person monim; 27.08.2014
comment
Ваш ответ неверен - по сути, это тот же код, что и у OP, но он просто добавляет дженерики Java - это не решает проблему, связанную с неправильным возвращаемым типом employeeList(). Смотрите принятый ответ. - person Krease; 20.01.2015