JUnit 4가 왜 메소드를 제공 assertEquals(foo,bar)
하지만 제공 하지 않는지 아는 사람이 assertNotEqual(foo,bar)
있습니까?
을 제공하고 assertNotSame
(에 해당 assertSame
)assertFalse
(에 해당하는 assertTrue
그들이 포함 귀찮게하지 않았다 이상한 것 같다, 그래서) assertNotEqual
.
그건 그렇고, JUnit-addons가 내가 찾고있는 방법을 제공한다는 것을 알고 있습니다. 나는 단지 호기심을 요구하고 있습니다.
답변
assertThat()
모든 종류의 부정을 쉽게 설명 할 수 있고 어설 션이 실패한 경우 예상 한 것과 설명을 자동으로 작성할 수 있는 최신 스타일 어설트 를 사용하는 것이 좋습니다 .
assertThat(objectUnderTest, is(not(someOtherObject)));
assertThat(objectUnderTest, not(someOtherObject));
assertThat(objectUnderTest, not(equalTo(someOtherObject)));
세 가지 옵션은 모두 동일하므로 가장 읽기 쉬운 옵션을 선택하십시오.
메소드의 단순 이름을 사용하고 (이 시제 구문이 작동하도록하려면) 다음 가져 오기가 필요합니다.
import static org.junit.Assert.*;
import static org.hamcrest.CoreMatchers.*;
답변
이 assertNotEquals
JUnit을 4.11가 : https://github.com/junit-team/junit/blob/master/doc/ReleaseNotes4.11.md#improvements-to-assert-and-assume
import static org.junit.Assert.assertNotEquals;
답변
나도 똑같아 Assert API는 그리 대칭 적이 지 않습니다. 객체가 동일한 지 테스트하기 위해 다음을 제공합니다.assertSame
및assertNotSame
.
물론 작성하기에는 너무 길지 않습니다.
assertFalse(foo.equals(bar));
이러한 주장으로 유감스럽게도 출력의 유익한 부분은 테스트 방법의 이름이므로 설명 메시지를 별도로 작성해야합니다.
String msg = "Expected <" + foo + "> to be unequal to <" + bar +">";
assertFalse(msg, foo.equals(bar));
물론 너무 지루해서 자신의 것을 굴리는 것이 좋습니다 assertNotEqual
. 다행히 향후 JUnit의 일부가 될 것입니다. JUnit issue 22
답변
assertNotEqual이 없다는 것은 실제로 비대칭이며 JUnit을 조금 덜 배우게 만든다고 주장합니다. 메소드를 추가 할 때 API의 복잡성이 줄어든다는 사실을 명심하십시오. 대칭은 더 큰 공간을 지배하는 데 도움이됩니다. 내 생각 엔 생략이 필요한 이유는이 방법을 요구하는 사람들이 너무 적기 때문일 수있다. 그러나 assertFalse조차 존재하지 않았던 때를 기억합니다. 그러므로 나는 그 방법이 어려운 방법이 아니라면 결국 그 방법이 추가 될 것이라는 긍정적 인 기대를 가지고있다. 비록 많은 해결 방법, 심지어 우아한 해결 방법이 있음을 인정하지만.
답변
나는이 파티에 꽤 늦게오고 있지만 나는 그 형태를 발견했다.
static void assertTrue(java.lang.String message, boolean condition)
대부분의 ‘같지 않은’경우에 작동하도록 만들 수 있습니다.
int status = doSomething() ; // expected to return 123
assertTrue("doSomething() returned unexpected status", status != 123 ) ;
답변
jUnit4.12를 사용하여 Java 8 환경에서 JUnit을 작업 중입니다.
나를 위해 : 컴파일러는 내가 사용했을 때도 assertNotEquals 메소드를 찾을 수 없었습니다.
import org.junit.Assert;
그래서 나는 변경 assertNotEquals("addb", string);
에Assert.assertNotEquals("addb", string);
따라서 assertNotEqual
인식되지 않는 문제에 직면하고 있다면 문제를 Assert.assertNotEquals(,);
해결 하도록 변경하십시오.
답변
사람들이 assertNotEquals ()를 원했던 명백한 이유는 내장 객체를 먼저 날아간 객체로 변환하지 않고 비교하는 것이 었습니다.
자세한 예 :
....
assertThat(1, not(equalTo(Integer.valueOf(winningBidderId))));
....
vs.
assertNotEqual(1, winningBidderId);
슬프게도 Eclipse에는 기본적으로 JUnit 4.11이 포함되어 있지 않으므로 자세한 정보가 필요합니다.
주의 사항 ‘1’을 Integer.valueOf ()에 싸야한다고 생각하지 않지만 .NET에서 새로 반환되었으므로 정확성에 의존하지 않습니다.