2017-02-17 2 views
0

날짜가 포함 된 검색에 대한 테스트를 작성하고 싶습니다. 내가AssertThat 사용 날짜 비교

클래스 구조는 다음과 같은 것입니다
assertThat(repository.findByBookingDateAfter(LocalDate.of(2016, 1, 1))).extracting("bookingDate").are(...)); 

같은 테스트 코드 뭔가 생각하고 : 쿼리가 지정된 날짜 이후에 모든 예약에 있기 때문에

public class Booking{ 
    ... 
    LocalDate bookingDate; 
    ... 
} 

, 내 시험은을 확인하여야한다 필드는 실제로 날짜보다 늦습니다. 온라인 검색을 한 후에는 유용한 정보가 보이지 않습니다. 내가 올바른 길을 가고 있는지 아닌지 궁금해하고 있습니다.

제안 사항?

업데이트 :

나중에, 나는 종속성 설정이 build.gradle 파일에서 다음입니다 변경 :

testCompile('org.springframework.boot:spring-boot-starter-test'){ 
    exclude group: 'org.assertj' 
} 
testCompile group: 'org.assertj', name: 'assertj-core', version: '3.6.2' 

이 assertj의 최신 버전을 할 수 있습니다.

업데이트 2 :

다음은 "입니다"로 시작하는 방법의 스크린 샷이다. "isAfter"가 목록에 없습니다.

enter image description here

+1

더 많은 ** 코드 **와 예제 ** 테스트 **, ** 예상 ** 및 ** 이미 ** 시도한 **에 대한 설명을 확장하십시오. ** date API **를 사용하는 경우 (예 : 'LocalDate'가 표시됨) [Joda-Time Assertion] (https : //joel-costigliola.github) 설명서를보고 싶을 수 있습니다. .io/assertj/assertj-joda-time.html) 또는 [Java 8 Date and Time API의 코드 예제] (https://github.com/joel-costigliola/assertj-examples/blob/master/assertions-examples /src/test/java/org/assertj/examples/Java8DateTimeAssertionsExamples.java). – Riggs

+0

감사합니다. 내 질문에 자세한 내용을 추가합니다. – vic

답변

0

나는 모든 추출 된 날짜가 쿼리에 사용 된 후에는 것을 확인 allMatch 또는 allSatisfy 주장을 사용할 수 있습니다.

// set the extracted type to chain LocalDate assertion 
assertThat(result).extracting("bookingDate", LocalDate.class) 
        .allMatch(localDate -> localDate.isAfter(queryDate))); 

또는

// use a lambda to extract the LocalDate to chain LocalDate assertion 
assertThat(result).extracting(Booking::getBookingDate) 
        .allSatisfy(localDate -> assertThat(localDate).isAfter(queryDate)); 

당신은 두 번째 주장에 더 나은 오류 메시지가, 그것은 잘못된 날짜가 표시됩니다 얻는다.

+0

allMatch와 allSatisfy는 assertj의 일부입니까? 내 프로젝트의 종속성에서 찾을 수 없습니다. 또한 localDate -> assertThat (localDate) 코드도 컴파일러를 전달할 수 없습니다. – vic

+0

3.6.2에 있습니다. http://joel-costigliola.github.io/assertj/core-8/api/org/assertj/core/api/AbstractIterableAssert.html#method.summary –

+0

버전으로 교체 한 후 참조 , 나는 모든 것을 볼 수 있습니다. 모든 것이 만족스럽지 만, 그렇지 않습니다. 사용 가능한 모든 방법을 검사하지만 적합한 방법을 찾을 수 없습니다. – vic