Java 对数组转换集进行单元测试

Java 对数组转换集进行单元测试,java,Java,我有一个数组。我需要将其转换为集合,然后进行单元测试。我成功地完成了设置对话的数组。但是单元测试不起作用。我是单元测试方面的新手。请帮忙 public class ArrToSet { public static void main(String[] args) { String[] array = {"a","b","c"}; System.out.println("Original

我有一个数组。我需要将其转换为集合,然后进行单元测试。我成功地完成了设置对话的数组。但是单元测试不起作用。我是单元测试方面的新手。请帮忙

public class ArrToSet {

    public static void main(String[] args) {
        String[] array = {"a","b","c"};
        System.out.println("Original Array: " + Arrays.toString(array));
    
        System.out.println("Array converted to Set: " + Arrays.stream(array).collect(Collectors.toSet()));
    
    }
}
我编写的单元测试用例:

class ArrToSetTest {
    @Test
    void test() {

        ArrToSet ar = new ArrToSet();
    
         Set<String> set = new HashSet<>();
            set.add("a");
            set.add("b");
            set.add("c");

        String actual[] = {"a","b","c"};
    
        assertEquals(set,actual);
   }
}
class-ArrToSetTest{
@试验
无效测试(){
ArrToSet ar=新的ArrToSet();
Set=newhashset();
集合。添加(“a”);
设置。添加(“b”);
设置。添加(“c”);
字符串实际值[]={“a”、“b”、“c”};
资产质量(设定、实际);
}
}

如果一个类通过
main
方法公开其API,那么您将无法对该类进行单元测试,而不进行丑陋的攻击。如果您重构
ArrToSet
以公开有意义的API,那么测试就会容易得多:

public class ArrToSet {
  public Set<String> convert(String[] array) {
    return Arrays.stream(array).collect(Collectors.toSet()));
  }

  public static void main(String[] args) {
    String[] array = {"a","b","c"};
    System.out.println("Original Array: " + Arrays.toString(array));
    ArrToSet arrToSet = ArrToSet();
    System.out.println("Array converted to Set: " + arrToSet.convert(array));
  }
}
公共类ArrToSet{
公共集转换(字符串[]数组){
返回Arrays.stream(array.collect(Collectors.toSet());
}
公共静态void main(字符串[]args){
字符串[]数组={“a”、“b”、“c”};
System.out.println(“原始数组:“+Arrays.toString(数组));
ArrToSet ArrToSet=ArrToSet();
System.out.println(“数组转换为集合:”+arrToSet.convert(数组));
}
}
现在测试这一点很容易:

@Test
void test() {
  ArrToSet ar = new ArrToSet();    
  Set<String> set = new HashSet<>();
  set.add("a");
  set.add("b");
  set.add("c");

  String actual[] = {"a","b","c"};
    
  assertEquals(set, arrToSet.convert(actual));
}
@测试
无效测试(){
ArrToSet ar=新的ArrToSet();
Set=newhashset();
集合。添加(“a”);
设置。添加(“b”);
设置。添加(“c”);
字符串实际值[]={“a”、“b”、“c”};
assertEquals(集合、arrToSet.convert(实际));
}

您测试的目的是什么?您试图断言什么?如果您试图断言字符串数组等于一个集合,则断言应始终失败。不要传递该字符串数组。@Jason-我正在测试并想断言数组和集合是否相等。@Amitkumar-在复制和粘贴此代码时显示编译器错误。