我在试图通过UUID获得有效订单的位置有一个OrderRepositoryTest
个代码
OrderRepositoryTest
个
@DataJpaTest
@ExtendWith(SpringExtension.class)
@AutoConfigureTestDatabase(connection = EmbeddedDatabaseConnection.H2)
public class OrderRepositoryTest {
private static final Logger logger = LoggerFactory.getLogger(OrderRepositoryTest.class);
@Autowired
OrderRepository orderRepository;
private static final UUID id2;
Order order2 = setOrder2();
static {
id2 = UUID.randomUUID();
}
@BeforeEach
public void setUp() {
orderRepository.save(order2);
}
@AfterEach
public void tearDown() {
orderRepository.deleteAll();
}
@Test
public void OrderRepositoryTest_getValidOrder() {
Assertions.assertThat(id2).isEqualTo(order2.getUuid());
// TODO unit test get valid order using orderRepository.findOrderByUuid()
}
public Order setOrder2() {
return Order
.builder()
.uuid(id2)
.build();
}
}
Order
个
@Getter
@Setter
@Builder
@ToString
@Jacksonized
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "orders")
public class Order {
@Valid
@Id
@GeneratedValue(strategy = GenerationType.UUID)
UUID uuid;
// TODO other columns
}
OrderRepository
个
public interface OrderRepository extends JpaRepository<Order, UUID> {
Optional<Order> findOrderByUuid(UUID uuid);
}
我会得到错误:Expected [correct_uuid] but was [wrong_uuid]
.但是,如果我注释orderRepository.save(order2);
和orderRepository.deleteAll();
,两个uuid都匹配,测试将通过.
我的预期结果应该是即使我运行.save()和.Delete()方法,因为UUID id2
是一个最终变量,它应该总是相同的.
一百:
我最初try 将id2赋值为:private static final UUID id2 = UUID.randomUUID();
,但也失败了.
Note2:
我可以做到以下几点:
@Test
public void OrderRepositoryTest_getValidOrder() {
UUID order2UUid = order2.getUuid();
// TODO orderRepository.findOrderByUuid(order2UUid)
}
这将通过测试,但我觉得我应该能够使用最初分配的UUID,因此我没有这样做.