내가 두 구조체가 동일하다는 것을 주장하고 싶은 말 :어설 구조체 평등
// Using CGPoint here for brevity, but my question applies to any struct type
CGPoint a = CGPointMake(1, 2);
CGPoint b = CGPointMake(1, 2);
STAssertEquals(a, b, @"this works");
assertThat(a, equalTo(b));
위의 STAssertEquals
처럼 작동 Hamcrest를 사용하여 주장을 작성하는 방법은 없습니다? assertThat
행은 매크로가 id
매개 변수를 필요로하므로 컴파일되지 않습니다. 구조체는 그렇지 않습니다. sameInstance
과 같은 equalTo
정규 표현식을 시도했지만 모두 입력 된 매개 변수가 id
인 것 같습니다. 다음으로 임의의 표현식에 YES
또는 NO
값이 있다고 주장하는 것이 좋습니다. 이런 식으로 뭔가 :
assertThat(a == b);
나이 :
assertThat(a == b, isTrue());
하지만 Hamcrest이 같은 아무것도 표시되지 않습니다.
나는 분명한 뭔가를 놓치고 있습니까? 분명히 나는 STAssertEquals
과 같은 SenTest 매크로를 사용하여 원하는 작업을 수행 할 수 있지만, 모든 내 주장이 일관된 스타일을 갖도록 Hamcrest를 사용하여 이러한 어설 션을 구현하는 것이 간단 할 것으로 예상했습니다.
나는 내가 비교할 특정 구조체에 대해 사용자 정의 Hamcrest 정규 표현식을 구현하여이 작업을 수행 할 수 있음을 알고 있습니다. 하지만 난 정말 간단한 assertion/matcher 그냥 C structs 간단한 bytewise 평등을 비교할 수있는 찾고 있었다.
아마도 내가 언급 한 가능성 중 아무 것도 Hamcrest와 함께 사용할 수없는 경우 일 것입니다. 그것이 사실이라면 나는이 효과에 대한 설득력있는 설명을 답으로 받아 들일 것입니다.
감사합니다. 나는 두 가지 요소 이상으로 구조체의 도매 평등 테스트가 부서지기 쉬운 테스트를 할 수 있다는 것에 동의한다. 그것은 나를 위해 사용의 많은 것을 보는 것이 어렵습니다. –