Java 如何为arraylist(按位置检索数据)编写Junit测试用例??。请选择下面的代码

Java 如何为arraylist(按位置检索数据)编写Junit测试用例??。请选择下面的代码,java,arraylist,junit,Java,Arraylist,Junit,这是完整的代码。我需要写一个测试用例。请帮助我编写测试用例,我是一名初学者,对Junit非常陌生 public class Register1 { String name; String location; int id; int salary; public Register1(String name, String location, int id, int salary) { this.name = name; t

这是完整的代码。我需要写一个测试用例。请帮助我编写测试用例,我是一名初学者,对Junit非常陌生

public class Register1 {

    String name;
    String location;
    int id;
    int salary;

    public Register1(String name, String location, int id, int salary) {
        this.name = name;
        this.location = location;
        this.id = id;
        this.salary = salary;

    }

}


import java.util.*;

public class Employee {

    public static void main(String[] args) {
        ArrayList<Register1> Emp = new ArrayList<Register1>();
        Emp.add(new Register1("Jack", "London", 101, 800));
        Emp.add(new Register1("Mike", "UK", 100, 60000));
        Emp.add(new Register1("Andrew", "China", 103, 2000));
        Emp.add(new Register1("Michel", "Korea", 106, 300000));
        Emp.add(new Register1("Donald", "London", 102, 90000));

        List<Register1> reg = new ArrayList<Register1>();
        String input = "London";
        for (Register1 adrs : Emp) {
            if (adrs.location.equals(input)) {
                reg.add(adrs);

            }
        }

        for (Register1 adrs : reg) {
            System.out.println("Employee from London:" + adrs.salary + " "
                    + adrs.location + " " + adrs.id + " " + adrs.name);
        }
    }
}
公共类寄存器1{
字符串名;
字符串位置;
int-id;
国际工资;
公共注册表1(字符串名称、字符串位置、整数id、整数工资){
this.name=名称;
这个位置=位置;
this.id=id;
这个。薪水=薪水;
}
}
导入java.util.*;
公营雇员{
公共静态void main(字符串[]args){
ArrayList Emp=新的ArrayList();
Emp.add(新登记册1(“杰克”,“伦敦”,101,800));
Emp.add(新登记册1(“Mike”,“UK”,10060000));
Emp.add(新登记册1(“安德鲁”,“中国”,103,2000年));
Emp.add(新登记册1(“Michel”,“Korea”,106300000));
Emp.add(新登记册1(“唐纳德”,“伦敦”,10290000));
List reg=new ArrayList();
字符串输入=“伦敦”;
用于(注册1 ADR:Emp){
if(adrs位置等于(输入)){
注册添加(adrs);
}
}
对于(注册人1 ADR:reg){
System.out.println(“来自伦敦的员工:+adrs.salary+”)
+adrs.location+“”+adrs.id+“”+adrs.name);
}
}
}
输出:

伦敦员工:800伦敦101杰克

伦敦员工:90000 London 102 Donald

首先,我要将程序的“逻辑”部分提取到一个单独的方法中:

public static List<Register1> filtrerByLocation (List<Register1> emp, String location) {
     List<Register1> reg = new ArrayList<Register1>();

     // A for loop would be nicer, IMHO, but keeping OP's style
     Iterator<Register1> itr = emp.iterator(); 
     while (itr.hasNext()) {
        Register1 res = (Register1) itr.next();
        if (res.location.equals("London")) {
            reg.add(res);
        }
     }
}

具体来说,你的问题是什么?你想测试什么?@Mureinik你编辑了什么?你清楚他的问题是什么吗?通常你将对一个接受输入并生成输出的方法进行单元测试。上面的
main
方法不使用其输入,也不生成输出。请查看JUnit或TestNG的文档,然后发布一个问题。@dubey theHarcourtians我修复了代码缩进并应用了标记以获得正确的语法突出显示。这是一个明显的编辑,使问题更容易阅读,无论OP可能想提供任何澄清。感谢Mureinik,这似乎是更好的方式。
@Test
public void testFiler() {
    List<Register1> emp = new ArrayList<Register1>();
    emp.add(new Register1("Jack", "London", 101, 800));
    emp.add(new Register1("Mike", "UK", 100, 60000));
    emp.add(new Register1("Andrew", "China", 103, 2000));
    emp.add(new Register1("Michel", "Korea", 106, 300000));
    emp.add(new Register1("Donald", "London", 102, 90000));

    List<Register1> res = filterByLocation(emp, "London");

    assertEquals (2, res.size());
    assertEquals ("Jack", res.get(0).getName());
    assertEquals ("Donald", res.get(1).getName());
}