第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

對(duì) ArrayList 的 ArrayList 進(jìn)行 Junit 測(cè)試

對(duì) ArrayList 的 ArrayList 進(jìn)行 Junit 測(cè)試

嗶嗶one 2021-08-13 15:29:39
我是 Java 的初學(xué)者,我正在嘗試通過(guò)實(shí)踐來(lái)學(xué)習(xí),我發(fā)現(xiàn)這個(gè)練習(xí)的目的是將列表分區(qū)為 n 大小的子列表,方法分區(qū)采用參數(shù) (ArrayList, size)例如:partition([1,2,3,4,],2)will return ([1,2],[3,4])partition([1,2,3,4,],3)will return([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;    }}我想編寫一個(gè) Junit 測(cè)試來(lái)測(cè)試所有情況。我正在嘗試閱讀有關(guān)如何使用 Junit 的文檔,但我發(fā)現(xiàn)在這種情況下很難做到這一點(diǎn)。有人可以通過(guò)給出一些指示或一個(gè)看起來(lái)像這樣的例子來(lái)幫助我,這樣我就可以測(cè)試所有案例。
查看完整描述

2 回答

?
慕斯王

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超2個(gè)贊

您的用例似乎是參數(shù)化測(cè)試的一個(gè)很好的候選者。

JUnit 5 現(xiàn)在真的很成熟。所以我鼓勵(lì)使用它。

單元測(cè)試的總體思路是識(shí)別場(chǎng)景:你有什么作為輸入,你有什么作為預(yù)期。

在您的問(wèn)題中,您成功地開始定義它們。

但是一個(gè)好的單元測(cè)試是一個(gè)不會(huì)留下漏洞的單元測(cè)試。因此,您還必須識(shí)別和測(cè)試極端情況。

例如,您可以定義場(chǎng)景(并非詳盡無(wú)遺,但會(huì)給您一個(gè)想法):


partition([1,2,3,4,],2) will return ([1,2],[3,4]) // nominal case

partition([1,2,3,4,],3) will return ([1,2,3],[4]) // nominal case

partition([1,2,3,4,],5) will return ()  // corner case

partition([],2) will return () // corner case

現(xiàn)在為他們寫一個(gè)測(cè)試:


import static java.util.Arrays.asList;


import java.util.ArrayList;

import java.util.List;

import java.util.stream.Stream;


import org.junit.jupiter.api.Assertions;

import org.junit.jupiter.params.ParameterizedTest;

import org.junit.jupiter.params.provider.Arguments;

import org.junit.jupiter.params.provider.MethodSource;


public class PartitionTest {


    @ParameterizedTest

    @MethodSource("partitionFixture")

    void partition(List<Integer> originalList, int partitionSize, List<List<Integer>> expectedListOfList) {

        ArrayList<ArrayList<Integer>> actualListOfList = new Partition().partition(originalList, partitionSize);

        Assertions.assertEquals(expectedListOfList, actualListOfList);

    }


    @SuppressWarnings("unused")

    private static Stream<Arguments> partitionFixture() {

        return Stream.of(Arguments.of(asList(1, 2, 3, 4), 2, asList(asList(1, 2), asList(3, 4))),

                         Arguments.of(asList(1, 2, 3, 4), 3, asList(asList(1, 2, 3), asList(4))),

                         Arguments.of(asList(1, 2, 3, 4), 5, asList()),

                         Arguments.of(asList(), 2, asList()));

    }


}


查看完整回答
反對(duì) 回復(fù) 2021-08-13
  • 2 回答
  • 0 關(guān)注
  • 436 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)