java - 对 ArrayList 的 ArrayList 进行 Junit 测试

标签 java list testing arraylist junit4

我是 Java 初学者,我试图通过实践来学习,我发现这个练习的目的是将列表划分为 n 大小的子列表 方法分区接受参数(ArrayList,大小)

例如:
partition([1,2,3,4,],2) 将返回 ([1,2],[3,4])
partition([1,2,3,4,],3) 将返回 ([1,2,3],[4])

package partition;
import java.util.ArrayList;
import java.util.List;

public class Partition {


    public ArrayList<ArrayList> partition(List<Integer> li, int n) {
        ArrayList<ArrayList> al = new ArrayList();
        int start = 0;
        int i=n;
        for(; i<li.size(); i+=n){
            List<Integer> lis = li.subList(start, i);
            ArrayList<Integer> list = new ArrayList<>();
            list.addAll(lis);
            al.add(list);
            start = i;
        }

        if(i >= li.size()){
            List<Integer> lis = li.subList(start, li.size());
            ArrayList<Integer> list = new ArrayList<>();
            list.addAll(lis);
            al.add(list);
        }
        return al;
    }
}

我想编写一个 Junit 测试来测试所有情况。我正在尝试阅读有关如何使用 Junit 的文档,但我发现在这种情况下执行此操作有些困难。 有人可以通过提供一些指示或类似这样的示例来帮助我,以便我可以测试所有情况。

最佳答案

所以你已经编写了你的​​类并想要测试它以查看实际效果。您可以使用单元测试执行以下操作:

import org.junit.Test;

import java.util.ArrayList;
import java.util.Arrays;

import static org.junit.Assert.assertEquals;

public class Tests {
    Partition sut = new Partition();

    @Test
    public void it_should_has_partition_size_2() {    
        ArrayList<ArrayList> partitioned = sut.partition(Arrays.asList(1,2,3,4),2);

        assertEquals(partitioned.size(), 2); // we expecting size to be 2
        assertEquals(partitioned.get(0), Arrays.asList(1,2,3)); // we know the first element should contains 1,2,3
    }

    @Test
    public void it_should_fail() {
        ArrayList<ArrayList> partitioned = main.partition(Arrays.asList(1,2,3,4),3);

        assertEquals(partitioned.size(), 2);
        // here it fails because we should expect partitioned.get(0) contains 1,2,3
        assertEquals(partitioned.get(0), Arrays.asList(1,2));
        /*
         * to pass this test we should use the below method
         * assertNotEquals(partitioned.get(0), Arrays.asList(1,2));
         */
    }
}

当您运行它时,第一个测试将通过,第二个测试将失败。 它解释了第二个失败的原因:

enter image description here

junit 的 Maven 依赖项:

    <!-- https://mvnrepository.com/artifact/junit/junit -->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
    </dependency>

关于java - 对 ArrayList 的 ArrayList 进行 Junit 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52026540/

相关文章:

Java:Swing:Jlist

java - 化简平方根

java - 从 AlertDialog 获取并比较密码

python - 返回列表中包含的子列表,固定大小

python - 将列表和字符串的列表制作成平面列表

delphi - 将 TListBox 选定行的内容存储在变量上

android - 通过 Android Studio 将大型应用程序传输到 Android Wear

java - 泛型参数扩展了 java 方法的另一个参数

python - 如何自动销毁django测试数据库

testing - 分开 'debug' 和 'release' 构建?