>  기사  >  Java  >  JUnit의 메소드 AssertNotEquals를 제공하지 않는 이유는 무엇입니까?

JUnit의 메소드 AssertNotEquals를 제공하지 않는 이유는 무엇입니까?

黄舟
黄舟원래의
2016-12-29 09:14:011627검색

1. 저는 다양한 부정을 쉽게 설명하고 기대하는 것과 주장이 실패할 경우 얻을 수 있는 것에 대한 설명을 자동으로 생성하는 새로운 주장(objectUnderTest,

is(not(someOtherObject)));
assertThat(objectUnderTest, not(someOtherObject));
assertThat(objectUnderTest, not(equalTo(someOtherObject)));
세 가지 옵션은 모두 동일합니다. 가장 읽기 쉽고(이 엄격한 구문이 작동하도록 허용하는) 옵션을 선택하고 다음 가져오기가 필요합니다.

i

mport static org.junit.Assert.*;
import static org.hamcrest.CoreMatchers.*;
2 . JUnit 4.11에는 AssertNotEquals가 있습니다:

3. Asserts API가 제공하는 개체를 테스트하는 데 그다지 적합하지 않다는 것은 물론 CodeGo.net도 작성하기에는 그리 길지 않습니다.

assertFalse(foo.equals(bar));

이 인수를 사용하면 Yield 부분이 너무 안타깝기 때문에 나누어야 합니다.

String msg = "Expected <" + foo + "> to be unequal to <" + bar +">";
assertFalse(msg, foo.equals(bar));
물론입니다. 미래의 JUnit: JUnit Issue 22

4. 만약 AssertNotEqual이 실제로 JUnit을 배우기 어렵게 만드는 것 중 하나라면, 축소된 API를 추가할 때 이는 깔끔한 상황이라는 점을 명심하세요. 더 많은 공간에 대한 도움이 필요하지 않습니다. 내 생각에는 멀티플레이어 호출이 너무 적기 때문에 생략된 것일 수도 있지만, 심지어는assertFalse가 존재하지 않을 것으로 예상되므로 결국 긍정적인 내용을 추가하게 될 수도 있습니다. 어려운 문제이지만 심지어 우아한 해결 방법도 있습니다.
5. 매우 늦었지만 다음 형식이 '같지 않은' 대부분의 경우에 적합하다는 것을 알았습니다. ' 사례

static void assertTrue(java.lang.String message, boolean condition)
6. 이는 Hamcrest에 더 좋습니다. AssertFalse 대신 부정적인 어설션이 테스트 보고서에 diff 실패를 표시합니다.

7. 그 이유는 AssertNotEquals() )가 완전한 기능을 갖춘 객체로 먼저 변환하지 않고 내장 명령이기 때문입니다. 자세한 예:

int status = doSomething() ; // expected to return 123
assertTrue("doSomething() returned unexpected status", status != 123 ) ;


....
assertThat(1, not(equalTo(Integer.valueOf(winningBidderId))));
....
8. 모듈 API 일관성, JUnit이 AssertNotEquals()를 제공하지 않는 이유는 JUnit이 항상 이를 좋아하는 이유입니다. 즉, 주장에 논리를 추가하고 싶은 특정 종류의 항목에는 끝이 없습니다! equalTo(...), is(...), not(...), regex(...)와 같은 기본 요소를 테스트하고 가독성과 온전함을 높이기 위해 이러한 요소를 함께 작동시키는 것이 더 좋습니다.

assertNotEqual(1, winningBidderId);
위와 같이 JUnit 메소드인 AssertNotEquals가 제공되지 않는 이유는 무엇인가요? 내용, 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 주목해주세요!



성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.