Programming

AssertjUnit의 문자열에 포함

procodes 2020. 5. 24. 21:53
반응형

AssertjUnit의 문자열에 포함


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;

가능하면 fest assert 2.0 사용 편집 : assertj에 더 많은 어설 션이있을 수 있습니다 (포크)

assertThat(x).contains("foo");

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"

중복 질문에 대한 답변을 여기에 게시 했습니다.


새로운 assertThat구문을 Hamcrest 와 함께 사용하십시오 .

JUnit 4.4 부터 사용할 수 있습니다 .


다른 변형은

Assert.assertThat(actual, new Matches(expectedRegex));

또한에 org.mockito.internal.matchers다른 흥미로운 매처 (matcher), 같은있다 StartWith, Contains


너무 늦었지만 업데이트하기 위해 아래 구문으로 완료했습니다.

import org.hamcrest.core.StringContains;
import org.junit.Assert;

Assert.assertThat("this contains test", StringContains.containsString("test"));

이 페이지에서 많은 답변을 시도했지만 실제로 효과가 없었습니다.

  • org.hamcrest.CoreMatchers.containsString 이 컴파일되지 않고 메소드를 분석 할 수 없습니다.
  • JUnitMatchers.containsString 은 지원되지 않으며 CoreMatchers.containsString을 참조합니다.
  • org.hamcrest.Matchers.containsString : NoSuchMethodError

그래서 읽을 수있는 코드를 작성하는 대신 질문에서 언급 한 간단하고 실행 가능한 방법을 사용하기로 결정했습니다.

바라건대 다른 해결책이 나올 것입니다.

참고 URL : https://stackoverflow.com/questions/1092219/assertcontains-on-strings-in-junit

반응형