Parcourir la source

Stabilizes CarrierMovementTest#testSameValueAsEqualsHashCode

The default constructor of java.util.Date depends on the
system clock.  If the clock should happen to tick while the
CarrierMovements in this test are initialized, two
movements we expect to be the same will be off by a millisecond.
Danil il y a 8 ans
Parent
révision
305db83f6e

+ 10
- 4
src/test/java/se/citerus/dddsample/domain/model/voyage/CarrierMovementTest.java Voir le fichier

@@ -29,10 +29,16 @@ public class CarrierMovementTest {
29 29
 
30 30
   @Test
31 31
   public void testSameValueAsEqualsHashCode() {
32
-    CarrierMovement cm1 = new CarrierMovement(STOCKHOLM, HAMBURG, new Date(), new Date());
33
-    CarrierMovement cm2 = new CarrierMovement(STOCKHOLM, HAMBURG, new Date(), new Date());
34
-    CarrierMovement cm3 = new CarrierMovement(HAMBURG, STOCKHOLM, new Date(), new Date());
35
-    CarrierMovement cm4 = new CarrierMovement(HAMBURG, STOCKHOLM, new Date(), new Date());
32
+    long referenceTime = System.currentTimeMillis();
33
+
34
+    // One could, in theory, use the same Date(referenceTime) for all of these movements
35
+    // However, in practice, carrier movements will be initialized by different processes
36
+    // so we might have different Date that reference the same time, and we want to be
37
+    // certain that sameValueAs does the right thing in that case.
38
+    CarrierMovement cm1 = new CarrierMovement(STOCKHOLM, HAMBURG, new Date(referenceTime), new Date(referenceTime));
39
+    CarrierMovement cm2 = new CarrierMovement(STOCKHOLM, HAMBURG, new Date(referenceTime), new Date(referenceTime));
40
+    CarrierMovement cm3 = new CarrierMovement(HAMBURG, STOCKHOLM, new Date(referenceTime), new Date(referenceTime));
41
+    CarrierMovement cm4 = new CarrierMovement(HAMBURG, STOCKHOLM, new Date(referenceTime), new Date(referenceTime));
36 42
 
37 43
     assertThat(cm1.sameValueAs(cm2)).isTrue();
38 44
     assertThat(cm2.sameValueAs(cm3)).isFalse();