前提・実現したいこと
LocalDateTime.now()を使って今の時刻が指定期間内に入っているかどうか判定するメソッドがあります。
このメソッドをテストする際に、テスト実行時刻ではなく、指定の時間にて判定できるかテストする方法はありますか?
テスト対象のメソッド
java
1public DemoClass { 2 public static final LocalDateTime START_DAY = LocalDateTime.of(2018,8,20,0,0); 3 public static final LocalDateTime END_DAY = LocalDateTime.of(2018,8,30,0,0); 4 5 public static boolean isPeriodCovered() { 6 LocalDateTime now = LocalDateTime.now(); 7 return !(now.isAfter(startDay) && now.isBefore(endDay)); 8 } 9}
テストしたいこと
java
1 2@Test 3public void 対象期間外はfalseを返すか() { 4 // この時間をテストしたい 5 LocalDateTime OutsidePriodDay = DemoClass.STARTDAY.minusSeconds(1); 6 7 8 9 assertFalse(DemoClass.isPeriodCovered()); 10} 11 12public void 対象期間内ならtrueを返すか() { 13 // この時間をテストしたい 14 LocalDateTime OutsidePriodDay = DemoClass.STARTDAY.plusSeconds(1); 15 16 DemoClass demoClass = new DemoClass(); 17 18 assertTrue(DetroitemoClass.isPeriodCovered()); 19} 20
試したこと
PowerMockでLcalDateTimeをmockする方法も試しましたが、何故かモックがかかりませんでした。
また、Clockを使う方法
https://stackoverflow.com/questions/32792000/how-can-i-mock-java-time-localdate-now
も見たのですが、どのように使用するのか分かりませんでした。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/16 02:29