2017-11-24 18 views
1

expectedactual이 서로 같다고 주장하고 싶습니다. 둘 다 null이거나 공백 ("") 인 경우 - 즉 null은 비어 있음을 의미합니다.AssertJ에서 평등 또는 둘 모두를 확인하는 방법은 무엇입니까?

.withComparator(...).isEqualTo(expected)null는 AspectJ의에 의해 이전에 선택되어 있기 때문에, 작동하지 않습니다

@Given("^data is \"([^\"]*)\"$") 
void theDataIs(String arg) { 
    assertThat(msg.getData()) 
     .usingComparator(blankOkComperator).isEqualTo(arg); 
} 

내 비교기는 코 틀린 것입니다,하지만 당신은 아이디어를 얻을 : 만하여 검사를 구현하는 관리

object blankOkComperator : Comparator<String> { 
    override fun compare(o1: String?, o2: String?): Int { 
     if(StringUtils.isBlank(o1) && StringUtils.isBlank(o2)) return 0 
     if(StringUtils.isBlank(o1)) return -1 
     if(StringUtils.isBlank(o2)) return 1 
     return o1!!.compareTo(o2!!) 
    } 
} 

을 AssertJ의 Condition<String>을 재정의하지만 나에게 매우 어설프게 보이지는 않습니다.

@Given("^data is \"([^\"]*)\"$") 
void theDataIs(String arg) { 
    assertThat(msg.getDate()) 
     .is(new EqualToOrBothBlank(arg)); 
} 
,210

다시, 도우미 코 틀린입니다,하지만 당신은 내가 무슨 뜻인지 알고 수표를 구현하기 위해 AspectJ를-방법은

class EqualToOrBothBlank(val expected: String) : Condition<String?>() { 
    override fun matches(actual: String?): Boolean { 
     if(StringUtils.isBlank(actual) && StringUtils.isBlank(expected)) return true; 
     return StringUtils.equals(actual, expected) 
    } 
} 

있습니까?

답변

1

현재로서는 Condition을 사용해야하지만 특정 비교기를 사용하는 경우 AssertJ가 null을 확인하지 않는 것이 타당한 점입니다.이 경우 https://github.com/joel-costigliola/assertj-core/issues/1121을 작성했습니다. 한편

, 나는 코드를 읽기 쉽게 만들기 위해 필드에 조건 인스턴스를 둘 것 :

@Given("^data is \"([^\"]*)\"$") 
void theDataIs(String arg) { 
    assertThat(msg.getDate()).is(equalToOrBothBlank(arg)); 
} 

아, 그리고 대신 AssertJ의 AspectJ를 몇 번 언급하고 있습니다 : D

+0

"측면을 ","assert "... 고정. – towi