BLOG ARTICLE 개발 | 73 ARTICLE FOUND

  1. 2006.12.01 cppunit을 사용하다 어이 없는 경우 발생...
  2. 2006.11.21 bcpp...
  3. 2006.11.15 gcov로 테스트 커버리지 체크해 보기...

일반적으로 cppunit을 이용해서 test case(이하 TC)를 작성할 때,

우리는 아무 생각 없이 본능적으로 TC를 작성한다...
(음.. 나만 그런가?)

여러 실수들이 나올 수 있지만 그 중에서도 제일 황당한 경우를 소개한다 --;

나는 TC를 짜면 linux와 windows에서 모두 돌려보는데,

linux에서는 돌아가고, windows에서는 안 돌아가는 이상한 경우를 만났다.

물론, 내가 os의 차이를 제대로 반영 못한 것이라고 생각했었다.

그러나 아무리봐도 오류를 찾을 수가 없는 것이었다.

'이런 ㅅㅂ --+, 무슨 버그길래 이렇게 안 나오는거쥐'라고 생각하며 디버깅을 하는데,

반나절이 지나도 안 잡히는 거다 --+

나중에 여러 실험을 통해 결론은 내린 것은...

바로... cppunit이 linux와 windows상에서 아주아주~ 약간 다르게 동작한다는 것... --; (허탈...)

linux에서는 TC를 등록한 순서대로 테스트가 수행되지만,

windows에서는 알파벳 순으로 소팅이 되는 것이다.

정확히 이야기하면 windows에서도 cppunit(d).lib만 쓸때는 괜찮은 것 같고,

testrunner(d).lib를 쓰면 이런 어이없는 현상이 나타나는 것 같다.

(아니면 내가 일하는 데서 만든 cppunit의 wrapper즈음 되는 친구가 잘못하는 것일 수도 --+
사실 이 확률이 제일 크다!! 그럼 나와 다른 환경의 분들은 모두 낚이는 거~ ㅎㅎ)

즉, 이런 현상은 TC 이름이 이런 경우에 나타날 수 있겠다.

TC_Overall_Init
TC_01
TC_02

위와 같은 TC가 있고, TC_Overall_Init이란 TC는 본의 아니게 제일 먼저 테스트 되어야 하며,
TC_01, TC_02는 TC_Overall_Init의 결과를 토대로 동작한다고 가정한다.

이 경우 linux에서는 등록된 순서대로 동작을 하는데,
windows에서는 제일 나중에 수행될 수 있다는 것이다.

고로 본인은 TC_Overall_Init을 TC_00으로 수정해서 그냥 패스 시켰다 --;

이 현상이 msvc 6.0에서만 나고, .Net에서는 안 나는지는 모르겠다.

나는 msvc 6.0으로만 테스트 해 봤으니 알수 없다... 귀차니즘 발동...


ps. 이 현상에 대해 더 자세한 사항을 알고 있는 분은 좀 알려주세요~
AND

bcpp...

개발/형상관리 2006. 11. 21. 08:47
회사에서 코딩 스탠다드의 압박으로 인해 beautifier를 찾아 보았다.

bc, indent님은 c를 대상으로 하는 것이니 패스~

그럼 무료중에 이름 좀 있다는 것 중에 남는건 bcpp 밖에 안 보이더군.

일단 설치해서 써 봤는데, 원하는 바에 비해 옵션으로 줄 수 있는게 많이 부족하네. --;

빵빵하고 공짜인 beautifier가 어디 있는지 아는 분 없나요?


ps. 쩝. 코딩 스탠다드의 취지를 알기야 하지만, 코딩도 내 나름대로의 개성인데 왜 틀에 껴 맞추려고 하는지...
    사실 se 입장에선 해야되는 거지만~  개발자 입장에서 보면 se는 역시 귀찮은 일이야 --+
AND

블로그에 쓸게 없으니 별걸 다 쓰게 된다...

이런거 안 쓰자 주의 였는데 결국 쓰게 되는군하...

어떤 부서에서 우리가 만든 library에 대한 test coverage를 체크 한다는데,

안전빵으로 미리 체크해 보는 차원에서 gcov로 미리 test coverage를 체크해 보았다.

처음 써보는 툴(?)이므로 아래 사이트에 가서 잠시 공부한 후...

http://korea.gnu.org/manual/release/gcov/gcov_1.ko.html

쓰는데, 생각보다 잘 안되더군 ==;

써 있는 데로 대충 했는데, "undefined reference __gcov_merge_add " 어쩌고 저쩌고 하는 에러님이 마구마구 나오시는 것이 아닌가...

한참을 해메다 보니 테스트 프로그램 컴파일 옵션에 -lgcov를 안 붙인것 이었음 ㅡ,.ㅡ;

아 쪽팔려라... 시간 아까비...


ps. 그리고 테스트 프로그램님이 나뉘어 있는 경우에는 좀 집계 내기가 불편한 감이 있었다...

AND