2017-11-24 5 views
1

expectedactualはお互いに等しいと主張したいと思います。両方ともnullまたは空白の場合("")、つまりnullは空白を意味します。AssertJで等しいかどうかをチェックするには?

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

私のコンパレータはKotlinですが、あなたのアイデアを得る:

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!!) 
    } 
} 

私だけでチェックを実施するために管理nullは、AspectJのことで前にチェックされているので、

.withComparator(...).isEqualTo(expected)は、動作しません。 AssertJのCondition<String>をオーバーライドしていますが、私にはそれほど主張はしていません。

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

ここでも、ヘルパーはKotlinですが、あなたは私が何を意味するか知っている:

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) 
    } 
} 

は、チェックを実装するAspectJの-方法はありますか?

答えて

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

関連する問題