日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

利用Excel或LibreOffice的业务输入进行单元测试约束

發(fā)布時(shí)間:2023/12/3 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 利用Excel或LibreOffice的业务输入进行单元测试约束 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

業(yè)務(wù)專家向我們(開(kāi)發(fā)人員)解釋業(yè)務(wù)限制。 但是,如何確保我們正確理解它們呢? 或更糟糕的是,一旦約束條件正式化,我們?nèi)绾螠y(cè)試他們之間是否同意?

好吧,有一種很棒的方法可以做到這一點(diǎn):由*.xlsx數(shù)據(jù)填充的JUnit測(cè)試。 我們?cè)试S他們?cè)贓xcel / LibreOffice中重新創(chuàng)建解決方案的一小部分,并讓他們決定匹配多少個(gè)約束。 然后,我們的JUnit測(cè)試將檢查我們的約束實(shí)現(xiàn)是否符合那些要求。

傳統(tǒng)單元測(cè)試

在“ 會(huì)議安排”??示例中 ,要測(cè)試會(huì)議室沖突約束(在重疊的時(shí)隙中,同一會(huì)議室中每對(duì)講話對(duì)的硬性懲罰),請(qǐng)輸入:

@Test public void roomConflict() {TalkType talkType = new TalkType(0L, "type1");Talk talk1 = new Talk(1L).withTalkType(talkType).withSpeakerList(Collections.emptyList()).withRequiredRoomTagSet(Collections.emptySet())...Talk talk2 = new Talk(2L)...LocalDateTime start1 = LocalDateTime.of(2018, 1, 1, 9, 0);LocalDateTime end1 = LocalDateTime.of(2018, 1, 1, 10, 0);LocalDateTime start2 = LocalDateTime.of(2018, 1, 1, 9, 30);LocalDateTime end2 = LocalDateTime.of(2018, 1, 1, 10, 30);LocalDateTime start3 = LocalDateTime.of(2018, 1, 1, 10, 0);LocalDateTime end3 = LocalDateTime.of(2018, 1, 1, 11, 0);Timeslot slot1 = new Timeslot(1L).withTalkTypeSet(Collections.singleton(talkType)).withStartDateTime(start1).withEndDateTime(end1);Timeslot slot2 = new Timeslot(2L)...Timeslot slot3 = new Timeslot(3L)...Room room1 = new Room(1L).withTalkTypeSet(Collections.singleton(talkType)).withUnavailableTimeslotSet(Collections.emptySet());ConferenceSolution solution = new ConferenceSolution(1L).withTalkTypeList(Collections.singletonList(talkType))...scoreVerifier.assertHardWeight(ROOM_CONFLICT, 0, solution);// Talks in same room without overlapping time slotstalk1.withRoom(room1).withTimeslot(slot1);talk2.withRoom(room1).withTimeslot(slot3);scoreVerifier.assertHardWeight(ROOM_CONFLICT, 0, solution);// Talks in same room with overlapping time slotstalk2.withTimeslot(slot2);scoreVerifier.assertHardWeight(ROOM_CONFLICT, -10, solution); }

為了測(cè)試會(huì)議室沖突,您需要初始化兩個(gè)對(duì)話,三個(gè)時(shí)隙和一個(gè)會(huì)議室。 但是,對(duì)于這樣一個(gè)簡(jiǎn)單的單元測(cè)試,前面的代碼片段太長(zhǎng)了,大多數(shù)樣板代碼都是用于初始化會(huì)議解決方案的必填字段,而您不需要進(jìn)行單元測(cè)試,因此您必須為每個(gè)單元進(jìn)行一次測(cè)試。 對(duì)于更復(fù)雜的約束,編寫傳統(tǒng)的單元測(cè)試及其原因變得太麻煩了。

為了避免初始化不需要的字段,您可以利用ConferenceSchedulingXlsxFileIO為您初始化它們,并僅在該測(cè)試或同一電子表格中的其他測(cè)試中編寫您使用的內(nèi)容。

要使用xlsx文件測(cè)試會(huì)議室沖突,請(qǐng)創(chuàng)建三個(gè)時(shí)隙,兩個(gè)對(duì)話和一個(gè)會(huì)議室:

初始化必填字段后,為每個(gè)約束的每次得分驗(yàn)證創(chuàng)建一個(gè)單獨(dú)的表。 例如,以下兩張紙檢查房間沖突約束:

在每個(gè)測(cè)試表(藍(lán)色)中,指定約束條件包,約束條件名稱,當(dāng)前測(cè)試方案的描述和預(yù)期分?jǐn)?shù)。 然后將對(duì)話分配給房間和時(shí)隙以使其可視化。 請(qǐng)注意,您無(wú)需列出在“時(shí)隙和房間”工作表中聲明的所有時(shí)隙和房間。

結(jié)論

與使用代碼編寫單元測(cè)試不同,業(yè)務(wù)專家可以指定他們希望如何在Excel / LibreOffice文件中匹配約束。 然后,開(kāi)發(fā)人員實(shí)施約束以通過(guò)這些測(cè)試。 這提供了開(kāi)發(fā)人員和領(lǐng)域?qū)<抑g更有效的通信方式。

要測(cè)試xlsx文件中的評(píng)分規(guī)則:

  • 在設(shè)置表中列出測(cè)試的所有必填字段。
  • 對(duì)于每個(gè)分?jǐn)?shù)驗(yàn)證,請(qǐng)創(chuàng)建一個(gè)單獨(dú)的藍(lán)色測(cè)試表,其中包含約束包,約束名稱和預(yù)期分?jǐn)?shù)。
  • 僅列出要用于相應(yīng)規(guī)則的字段。
  • 在ConferenceSchedulingScoreRulesXlsxTest中設(shè)置testFileName并運(yùn)行測(cè)試文件。
  • 相關(guān)資料

    使用OptaPlanner安排蘇黎世Voxxed Days 2018


    翻譯自: https://www.javacodegeeks.com/2018/08/unit-testing-constraints-business-input.html

    總結(jié)

    以上是生活随笔為你收集整理的利用Excel或LibreOffice的业务输入进行单元测试约束的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。