[완료] perl의 Test::More 모듈과 같은 일을 해주는 JAVA 클래스 또는 툴을 찾습니다!

raymundo의 이미지

#!/usr/bin/perl -w
use Test::More tests=>3;
 
$a = 1+1;
$b = 2+1;   # 2+2인데 잘못된 값이 $b에 들어갔음
$c = 3+3;
 
is($a, 2, "1+1=2");
is($b, 4, "2+2=4");  # $b에는 4가 들어있을 것이라 기대하지만..
is($c, 6, "3+3=6");

위 Perl 코드를 실행하면, 아래와 같은 출력이 나옵니다.

1..3
ok 1 - 1+1=2                - 자동으로 테스트 번호까지 매겨주고,
not ok 2 - 2+2=4            - 2번 테스트에서, 4가 나와야 되는데 실제로는 3이 나왔음을 보여줌
#   Failed test '2+2=4'
#   at ./test.pl line 9.
#          got: '3'
#     expected: '4'
ok 3 - 3+3=6
# Looks like you failed 1 test of 3.

위와 같은 일을 해주는 JAVA 클래스 만들어져 있는게 있을까요? 예를 들어 그 클래스 이름이 Test이고, 제가 테스트하고 싶은 클래스 이름이 MyClass라면

MyClass myClass = new MyClass();
 
Test.is(myClass.hello(), "hello", "hello()테스트");

myClass.hello()의 리턴값이 "hello"이면 테스트 성공, 그렇지 않으면 실패인 거고 위의 펄에서와 같이 각각의 테스트의 성공 실패 여부를 일목요연하게 보여줄 수 있도록...

어차피 제가 테스트하려는 건 기껏해야 int 등의 기본타입이나 스트링, 또는 boolean 타입 정도라서 여차하면 간단하게 제가 직접 만들까하고는 있는데... 그래도 신뢰도(?) 면에서 이미 공인받은 게 있다면 그걸 마다할 이유가 없으니 말이죠..

구글링하려 해도 "Test"라는 검색어로는 결과가 너무 광범위하게 나오네요.

P.S.

방금 생각난 건데, 제가 전에도 "그냥 만들어서 쓸까"하다가 막혔던 이유가, 예를 들어 저 hello()를 실행했더니만 exception이 발생했다면, 그 이하에 있는 테스트들을 수행하지 못하고 종료되어 버리겠죠. 그걸 막으려면 각각의 Test.is 구문을 try-catch로 감싸줘야 하는데 그럴 거면 그냥 if문으로 비교하고 말지 뭐하러 힘들게 Test 클래스란 걸 따로 만들겠냐 싶었던 겁니다. 이왕이면 하나의 테스트에서 exception이 발생하더라도 나머지 테스트는 계속 진행가능하도록 해 주는 게 있지 않을까 싶은데...

nohmad의 이미지

JUnit에 보면 각종 assertion들이 들어있습니다. assertEquals(expected, actual, message) 처럼 사용하고, IDE와의 통합이 아주 좋죠.

$ruby.is_a?(Object){|oriented| language} #=> true
http://rubykr.org

raymundo의 이미지

assert* 메쏘드들을 보니 이게 딱 제 본문에 쓴 것과 일치하는 것 같긴 한데, 문서들을 보니까 펄에서처럼 쉽게 사용하지 못하고 웬 Test 클래스 따로 만들어주고 이런 저런 메쏘드들을 오버라이드하고 등등 해야 하는 것처럼 나와서 지금 샘플 따라하느라 끙끙대는 중입니다. (아니면 간단한 테스트용으로는 그냥 Assert 클래스만 가져와서 쓸 수 있는 건데 제가 괜히 어렵게 하는 건지도?)

그래도 일단 JUnit을 쓰면 되겠구나라는 걸 알았으니 다행이네요 ^_^ 감사합니다~

좋은 하루 되세요!

익명사용자의 이미지

테스트 주도 프로그래밍이라는 책에

번역하신 김창준님께서 작성하신 TDD시연 동영상이 부록으로 있습니다.

그 부분이 바로 이클립스와 JUnit을 활용해서 TDD를 사용하고 있는데요.

한번 보시면 바로 이해되실정도로 직관적으로 구성되어 있습니다.

클래스 만들고 테스트 메서드 만들고, 빨간불이냐 파란불이냐 처다보기만 하면 되니까요.

에러가 났다면 콘솔창에서 클릭만하면 바로 에러가 난 부분으로 이동해줍니다.

raymundo의 이미지

이걸 뒤늦게 봤네요 ^^ 그 책에 포함된 동영상인지는 모르겠습니다만 김창준님과 다른 한분이 해설을 하면서 이클립스로 시연하는 동영상이 웹에 있더군요. 감사합니다.

좋은 하루 되세요!

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.