2009-03-23 4 views
0

UnitTest ++를 단위 테스트 C++ 코드로 사용하고 있습니다.UnitTest ++에서 유틸리티 함수를 어떻게 사용할 수 있습니까

내 테스트에는 여러 번 반복되는 테스트 그룹이 있습니다. 내가 원하는 것은 이러한 테스트를 수행하는 유틸리티 함수입니다. 즉,이 걸릴 싶습니다

TEST(foo) { 
    Foo one; 
    Foo two; 

    // init one & two 
    // lots of CHECK_CLOSE(one.bar, two.bar, 1e-5); in repeating cycles 
} 

TEST(bar) { 
    Foo one; 
    Foo two; 

    // init one & two 
    // lots of CHECK_CLOSE(one.bar, two.bar, 1e-5); in repeating cycles 
} 

그리고 이것을 사용 :

void blah(const Foo& one, const Foo& two) { 
    // lots of CHECK_CLOSE(one.bar, two.bar, 1e-5); 
} 

TEST(foo) { 
    Foo one; 
    Foo two; 

    // init one & two 
    blah(one, two); 
} 

TEST(bar) { 
    Foo one; 
    Foo two; 

    // init one & two 
    blah(one, two); 
} 

이 작동하지 않습니다 인해 유닛 테스트 ++의 매크로 조작을. 이 문제에 접근하는 가장 좋은 방법은 무엇입니까?

편집 : 지금 당장은 확인할 수없는 몇 가지 생각.

  1. 나는 struct에서 유틸리티 기능을 가진기구를 사용하는 경우, 나는이 함수 내에서 유닛 테스트 ++ 매크로를 호출 할 수 있습니까?
  2. 일반적인 테스트를 수행하는 매크로를 작성할 수 있습니다. 나는 정말로 이것을 좋아하지 않지만, 적어도 나는 stary dry ...

답변

2

매크로로 작성하십시오. 매크로가 악의적 인 것을 허용하지 마십시오. 매크로는 반복적 인 코드를 생성하도록 설계되었습니다.

0

나는 어떤 테스트가 실패했는지에 대한 많은 정보를 잃어 버리기 때문에 이것을하는 것에 반대한다. 래퍼 함수는 이제 두 개 이상의 테스트 기능을 포함하므로 실패 할 경우 실패한 테스트의 원인이 무엇인지 다시 추적해야합니다.

+0

예, 유틸리티 기능은 전달 된 매개 변수에 따라 다른 이유로 실패 할 수 있습니다. –

+0

필자는 필자가 유틸리티 나 래퍼 기능의 가치가 줄어든 이유를 알 수 있습니다. 그 이유는 실패한 이유와 실제로 실행 된 테스트를 추적해야하기 때문입니다. 테스트를 하드 코딩하면 이런 일이 발생하지 않습니다 –

+0

따라서 각 테스트 방법에서 여러 번 테스트를 반복하는 것이 좋습니다. Hmmph, UnitTest ++에서 상당히 제한적으로 보입니다. ++ –

0

bool을 반환하는 공통 점검 기능을 만드십시오. 그런 다음 각 테스트에서 공통 기능의 결과를 확인 또는 ASSERT하십시오.

+0

이것은 제가 지금하고있는 일입니다. 그러나 이런 식으로 정보를 잃어 버렸습니다 - 유틸리티 기능의 수표 중 하나가 실패했음을 알고 있습니다. –

관련 문제