programing

AssertjUnit의 문자열에 포함됨

prostudy 2022. 6. 20. 21:05
반응형

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와 함께 사용합니다.

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

너무 늦었지만 업데이트하기 위해 아래 구문을 사용했습니다.

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

반응형