AssertjUnit의 문자열에 포함됨
jUnit으로 쓸 수 있는 더 좋은 방법이 있나요?
String x = "foo bar";
Assert.assertTrue(x.contains("foo"));
Hamcrest와 JUnit4를 추가하면 다음 작업을 수행할 수 있습니다.
String x = "foo bar";
Assert.assertThat(x, CoreMatchers.containsString("foo"));
스태틱한 Import를 사용하면, 한층 더 보기 좋게 됩니다.
assertThat(x, containsString("foo"));
필요한 정적 Import는 다음과 같습니다.
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.CoreMatchers.containsString;
가능한 경우 항상 fest assert 2.0 사용 EDIT: assertj에는 더 많은 assertion(포크)이 있을 수 있습니다.
assertThat(x).contains("foo");
햄크레스트 매처 사용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와 함께 사용합니다.
너무 늦었지만 업데이트하기 위해 아래 구문을 사용했습니다.
import org.hamcrest.core.StringContains;
import org.junit.Assert;
Assert.assertThat("this contains test", StringContains.containsString("test"));
assertj-luent 어설션을 사용할 수 있습니다.보다 인간적으로 읽기 쉬운 방식으로 주장을 쓸 수 있는 기능이 많이 있습니다.
당신의 경우, 그것은
String x = "foo bar";
assertThat(x).contains("foo");
이것은 문자열뿐만 아니라 목록, 컬렉션 등에 사용할 수 있습니다.좀 더 친근한 방법으로
예(junit 버전 4.13)
import static org.assertj.core.api.Assertions.assertThat;
import org.junit.Test;
public class TestStr {
@Test
public void testThatStringIsContained(){
String testStr = "hi,i am a test string";
assertThat(testStr).contains("test");
}
}
또 다른 변종은
Assert.assertThat(actual, new Matches(expectedRegex));
게다가org.mockito.internal.matchers
다음과 같은 다른 흥미로운 입문자들이 있다.StartWith
,Contains
기타.
assertj 변이체
import org.assertj.core.api.Assertions;
Assertions.assertThat(actualStr).contains(subStr);
이 페이지에서 많은 답변을 시도해 봤지만, 실제로 효과가 있는 것은 아무것도 없었습니다.
- org.hamcrest.CoreMatchers.containsString이 컴파일되지 않아 메서드를 해결할 수 없습니다.
- JUnitMatchers.containsString은 해제됩니다(및 CoreMatchers.containsString을 참조).
- org.hamcrest.Matchers.containsString : No Such Method Error
그래서 읽을 수 있는 코드를 쓰는 대신 질문에 언급된 간단하고 실행 가능한 방법을 사용하기로 결정했습니다.
다른 해결책이 나왔으면 좋겠다.
언급URL : https://stackoverflow.com/questions/1092219/assertcontains-on-strings-in-junit
'programing' 카테고리의 다른 글
Vue.js - 모델이 변경을 거부하는 경우 입력값 복원 (0) | 2022.06.20 |
---|---|
C 프로그래밍 언어는 객체 지향입니까? (0) | 2022.06.20 |
다차원 어레이, Vuex 및 돌연변이 (0) | 2022.06.20 |
Linux 커널 코드에서 "EXPORT_SYMBOL"의 의미는 무엇입니까? (0) | 2022.06.20 |
Vuex는 언제 사용해야 합니까? (0) | 2022.06.20 |