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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2023/12/3 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 libreoffice_利用Excel或LibreOffice的业务输入进行单元测试约束 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

libreoffice

業務專家向我們(開發人員)解釋業務限制。 但是,如何確保我們正確理解它們呢? 或更糟糕的是,一旦約束條件正式化,我們如何測試他們之間是否同意?

好吧,有一種很棒的方法可以做到:用*.xlsx數據填充的JUnit測試。 我們允許他們在Excel / LibreOffice中重新創建解決方案的一小部分,并讓他們決定匹配多少個約束。 然后,我們的JUnit測試將檢查我們的約束實現是否符合那些要求。

傳統單元測試

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

@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); }

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

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

要使用xlsx文件測試會議室沖突,請創建三個時隙,兩個對話和一個會議室:

初始化必填字段后,為每個約束的每次得分驗證創建一個單獨的表。 例如,以下兩張紙檢查房間沖突約束:

在每個測試表(藍色)中,指定約束包,約束名稱,當前測試方案的描述和預期分數。 然后將對話分配給房間和時隙以使其可視化。 請注意,您無需列出在“時隙和房間”工作表中聲明的所有時隙和房間。

結論

與使用代碼編寫單元測試不同,業務專家可以指定他們希望如何在Excel / LibreOffice文件中匹配約束。 然后,開發人員實施約束以通過這些測試。 這提供了開發人員和領域專家之間更有效的溝通方式。

要測試xlsx文件中的評分規則:

  • 在設置表中列出測試的所有必填字段。
  • 對于每個分數驗證,請創建一個單獨的藍色測試表,其中包含約束包,約束名稱和預期分數。
  • 僅列出要用于相應規則的字段。
  • 在ConferenceSchedulingScoreRulesXlsxTest中設置testFileName并運行測試文件。
  • 相關資料

    使用OptaPlanner安排蘇黎世Voxxed Days 2018


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

    libreoffice

    總結

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

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。