返回所有值的问题

时间:2019-01-09 16:54:26

标签: java class junit

我在尝试返回我的Register类中的所有值时遇到麻烦。当前,它仅返回BLOGGS,J,但也应返回JONES,F和SINGH,N。预先谢谢你。

public static String execute(Register reg, Name n) {
  reg.removeName(1);
  reg.addName(n);
  for (Name nm : reg) {
    if(nm.getFamilyName().length() >= 5) {
      return (nm.getFamilyName().toUpperCase() + ", " + nm.getFirstName().charAt(0) + "\n");
    }
    return null;
  }
}  

这是jUnit测试的测试代码

@Test
public void testExecute() {
    Register r = new Register();
    r.addName(new Name("Joe", "Bloggs"));
    r.addName(new Name("Fred", "Jones"));
    r.addName(new Name("Nila", "Singh"));       

    String result = RegisterApp.execute(r, new Name("Cassie", "Downturn"));

    String expectedResult = "BLOGGS, J\nSINGH, N\nDOWNTURN, C\n";

    assertEquals("The string returned should match the expected result (run 1)", expectedResult, result);
}

1 个答案:

答案 0 :(得分:0)

@Carcigenicate已经喊出,您正要从for循环中返回。

您可以在此处利用流api:

public static String execute(Register reg, Name n) {
    reg.removeName(1);
    reg.addName(n);

    return 
        reg.stream()
           .filter(nm -> nm.getFamilyName().length() >= 5)
           .map(nm -> nm.getFamilyName().toUpperCase() + ", " + nm.getFirstName().charAt(0) + "\n")
           .collect(Collectors.joining());

}