jUnit으로 작성하는 더 좋은 방법이 있습니까
String x = "foo bar";
Assert.assertTrue(x.contains("foo"));
답변
Hamcrest 및 JUnit4를 추가하면 다음을 수행 할 수 있습니다.
String x = "foo bar";
Assert.assertThat(x, CoreMatchers.containsString("foo"));
일부 정적 가져 오기를 사용하면 훨씬 좋아 보입니다.
assertThat(x, containsString("foo"));
필요한 정적 가져 오기는 다음과 같습니다.
import static org.junit.Assert.assertThat;
import static org.hamcrest.CoreMatchers.containsString;
답변
답변
hamcrest matcher 사용 containsString()
// Hamcrest assertion
assertThat(person.getName(), containsString("myName"));
// Error Message
java.lang.AssertionError:
Expected: a string containing "myName"
got: "some other name"
더 자세한 오류 메시지를 선택적으로 추가 할 수 있습니다.
// Hamcrest assertion with custom error message
assertThat("my error message", person.getName(), containsString("myName"));
// Error Message
java.lang.AssertionError: my error message
Expected: a string containing "myName"
got: "some other name"
답변
답변
너무 늦었지만 업데이트하기 위해 아래 구문으로 완료했습니다.
import org.hamcrest.core.StringContains;
import org.junit.Assert;
Assert.assertThat("this contains test", StringContains.containsString("test"));
답변
다른 변형은
Assert.assertThat(actual, new Matches(expectedRegex));
또한에 org.mockito.internal.matchers
다른 흥미로운 매처 (matcher), 같은있다 StartWith
, Contains
등
답변
assertj 변형
import org.assertj.core.api.Assertions;
Assertions.assertThat(actualStr).contains(subStr);