JUnit ÅëÇÕ

 

 
ÀÌ ¼½¼ÇÀº IntelliJ IDEA¿¡¼­ JUnit ¿Í ÇÔ²² ÀÛ¾÷ÇÏ´Â ¸Þ¼Òµå¸¦ ±â¼úÇÕ´Ï´Ù.  ÇöÀç IDEA´Â JUnit 3.8.1°ú ÇÔ²² ¼±ÀûµË´Ï´Ù.
JUnit
¿¡ ´ëÇÑ ´õ ¸¹Àº ¼¼ºÎ»çÇ×À» À§ÇØ,  http://www.junit.org ¸¦ ÂüÁ¶ÇϽʽÿÀ.


JUnit Basics in Brief  

 

*   JUnit´Â ȸ±Í Å×½ºÆ® ÇÁ·¹ÀÓ¿öÅ©ÀÔ´Ï´Ù.

JUnit¸¦ »ç¿ëÇÏ´Â º¸ÅëÀÇ ¸Þ¼Òµå´Â Å×½ºÆ® ¾ç½ÄÀ» »ý¼ºÇÕ´Ï´Ù.  Å×½ºÆ® ¾ç½ÄÀ» »ý¼ºÇϱâ À§ÇØ ´ç½ÅÀº TestCase Ŭ·¡½º¸¦ È®ÀåÇϰí

ÀÖ´Â ¼­ºê Ŭ·¡½º¸¦ »ý¼ºÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.  ¶ÇÇÑ ´ç½ÅÀº ±×µéÀÇ À̸§ (¿¹¸¦ µé¸é, testSomething )¿¡¼­ test ¿Í ÇÔ²² ½ÃÀ۵ǴÂ

Ŭ·¡½º¿¡ ¸Þ¼Òµå¸¦ Ãß°¡ÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.
¾ÖÇø®ÄÉÀ̼ÇÀ¸·Î¼­ Å×½ºÆ®¸¦ ½ÇÇàÇϱâ À§ÇØ, Ŭ·¡½º¿¡ À־ÀÇ ´ÙÀ½ ÁÖ¿äÇÑ ¸Þ¼Òµå¸¦ »ç¿ëÇϽʽÿÀ:

 
    public static void main(String[] args) {
        new junit.textui.TestRunner().doRun(new TestSuite(<testClassName>.class));
    }
 

¶Ç ´Ù¸¥ ¹æ¹ýÀº Ŭ·¡½º¿¡¼­ public static Test suite() ¸Þ¼Òµå (Test  ÀÎÅÍÆäÀ̽º·ÎºÎÅÍ À¯·¡ÇÑ ¾î¶² Ŭ·¡½º/ÀÎÅÍÆäÀ̽º¸¦

´ç½ÅÀÌ »ç¿ëÇÒ ¼ö ÀÖ´Â ¸®ÅÏ ÇüÅ·μ­)¸¦ »ý¼ºÇÕ´Ï´Ù.

¾ÖÇø®ÄÉÀ̼ÇÀ¸·Î¼­ Å×½ºÆ®¸¦ ½ÇÇàÇϱâ À§ÇØ, Ŭ·¡½º¿¡ À־ÀÇ ´ÙÀ½ ÁÖ¿äÇÑ ¸Þ¼Òµå¸¦ »ç¿ëÇϽʽÿÀ:

 
    public static void main(String[] args) {
        new junit.textui.TestRunner().doRun(suite());
    }



JUnit ±¸¼º


ù ¹øÂ°·Î, ´ç½ÅÀº JUnit ½ÇÇà/µð¹ö±× ±¸¼ºÀ» »ý¼ºÇϰí, Á¶Á¤ÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.  

»ó¼¼ÇÑ °ÍÀº Run | Edit Configurations: Run/Debug Configurations: JUnitÀ» º¸½Ê½Ã¿À.


´ç½ÅÀº ÆÐŰÁö, Ŭ·¡½º¿Í º°µµ ¸Þ¼Òµå¿¡ ´ëÇÑ JUnit Å×½ºÆ®¸¦ ½ÃÀÛÇÒ ¸î °³ÀÇ ¹æ¹ýÀÌ ÀÖ½À´Ï´Ù.

 
Toolbar·ÎºÎÅÍ:
Edit Entries... ¸Þ´º¿¡¼­ Àû´çÇÑ JUnit ±¸¼ºÀ» ¼±ÅÃÇÏ°í ½ÇÇà/µð¹ö±ëÀ» ½ÃÀÛÇÕ´Ï´Ù.





¶ÇÇÑ IDEA¿¡¼­ ´ç½ÅÀº ÆË¾÷ ¸Þ´º¸¦ »ç¿ëÇÏ¿© JUnit Å×½ºÆÃÀ» ½ÃÀÛÇÒ ¼ö ÀÖ½À´Ï´Ù.

 
editor ¿¡¼­ : 

±×°ÍÀ» Å×½ºÆ®Çϴ Ŭ·¡½º ³»ÀÇ ¶Ç´Â ÀÌ ¸Þ¼Òµå¸¸À» Å×½ºÆ®ÇÏ´Â ¸Þ¼Òµå ³»ÀÇ ¿À¸¥ÂÊ ¹öưÀ» Ŭ¸¯ÇϽʽÿÀ.



Àüü Ŭ·¡½º¸¦ Å×½ºÆ®Çϱâ À§ÇØ, ¸Þ¼Òµå º¸µð ¹Û¿¡ ij·µÀ» ³õÀ¸½Ê½Ã¿À.


¸¸ÀÏ ´ç½ÅÀÌ main() º¸µð ³»ºÎ¿¡ ij·µÀ» ³õÀ¸¸é Å×½ºÆ®ÇÏ´Â °ÍÀÌ ¾Æ´Ñ ¾ÖÇø®ÄÉÀÌ¼Ç ½ÇÇà/µð¹ö±× ±¸¼ºÀ»

»ý¼ºÇÒ °Í ÀÔ´Ï´Ù.



³ªÅ¸³ª´Â ¹®¸Æ ¸Þ´º´Â Ŭ·¡½º ¶Ç´Â ¸Þ¼Òµå¸¦ À§ÇÑ JUnit Å×½ºÆ®¸¦ ¼öÇàÇÏ´Â °ÍÀ» Á¦¾ÈÇÕ´Ï´Ù.

 
 Project View  ( Project Tab, Packages Tab  ) ¿Í Commander ·ÎºÎÅÍ : 

Å×½ºÆ® ¹üÀ§¸¦ Á¦ÇÑÇϴ Ŭ·¡½º ¶Ç´Â ¸Þ¼Òµå(Show Members °¡ onÀÏ ¶§  Project Tab¶Ç´Â Packages Tab¿¡¼­),

±×°ÍÀ» Å×½ºÆ® Çϱâ À§Çؼ­ ÆÐŰÁö¸¦ ¿À¸¥ÂÊ ¹öư Ŭ¸¯ÇϽʽÿÀ.



³ªÅ¸³ª´Â ¹®¸Æ ¸Þ´º´Â ÆÐŰÁö/Ŭ·¡½º/¸Þ¼Òµå¸¦ À§ÇÑ JUnit Å×½ºÆ®¸¦ ¼öÇàÇÏ´Â °ÍÀ» Á¦¾ÈÇÕ´Ï´Ù.

JUnit ¹®¸Æ ¸Þ´º Ç׸ñÀÇ ¿Ü°ü°ú ±â´ÉÀº ¸î °¡ÁöÀÇ ¿ä¼Ò¿¡ ´Þ·Á ÀÖ½À´Ï´Ù.

ù ¹øÂ°·Î, JUnit Run/Debug ±¸¼ºÀÌ ¼±ÅÃµÈ ÆÐŰÁö/Ŭ·¡½º/¸Þ¼Òµå¸¦ À§ÇØ ÀÖ´ÂÁö´Â Áß¿äÇÕ´Ï´Ù.

µÎ ¹øÂ°·Î, ±×°ÍÀº ÀϽÃÀûÀÏ ¼ö Àְųª ¿µ¿øÇÒ ¼ö ÀÖ´Â ±¸¼º ŸÀÔ¿¡ ÀÇÁ¸ÇÕ´Ï´Ù.

¿µ±¸ÀûÀÎ ±¸¼ºÀº Ưº°ÇÑ ÆÐŰÁö/¸Þ¼Òµå/Ŭ·¡½º¸¦ À§ÇØ ¸í¹éÈ÷ »ý¼ºµÈ ±¸¼ºÀÔ´Ï´Ù.

±×·¯³ª ¸¸ÀÏ ¾î¶² ±×µéÀ» À§ÇÑ ¿µ±¸ÀûÀÎ ±¸¼ºÀÌ ¾ø´Ù¸é,  ´ç½ÅÀÌ Run ¶Ç´Â Debug¸¦ ¼±ÅÃÇÒ ¶§ ÀϽÃÀûÀÎ Çϳª´Â

ÀÚµ¿ÀûÀ¸·Î »ý¼ºµË´Ï´Ù.


ÀϽÃÀûÀÎ Run/Debug ±¸¼ºÀº ¾ÖÇø®ÄÉÀ̼ǰú ¾ÖÇø´À» À§ÇØ ¶ÇÇÑ »ý¼ºµÉ ¼ö ÀÖ½À´Ï´Ù.



ÀϽÃÀûÀÎ ±¸¼ºÀº ±âÁ¸ Run/Debug ±¸¼º Áß¿¡¼­ º¸¿©Áö°í ºñ½ÁÇÏ°Ô °ü¸®µË´Ï´Ù.  ±×·¯³ª ´ÜÁö ÇϳªÀÇ ÀϽÃÀûÀÎ ±¸¼ºÀÌ Á¸ÀçÇÒ ¼ö

ÀÖ½À´Ï´Ù.  ´ç½ÅÀÌ ¿µ±¸ÀûÀÎ ±¸¼º ¾øÀÌ ÆÐŰÁö/Ŭ·¡½º/¸Þ¼Òµå¸¦ À§ÇØ ½ÇÇà ¶Ç´Â µð¹ö±×¸¦ ¼±ÅÃÇÒ ¶§¸¶´Ù »õ·Ó°Ô »ý¼ºµÈ ÀϽÃÀûÀÎ

±¸¼ºÀº ¿À·¡µÈ ÀÓ½ÃÀûÀÎ °ÍÀ» ±³Ã¼ÇÒ °ÍÀÔ´Ï´Ù.

Run "JUnit

configuration"  

±âÁ¸ ¿µ±¸ÀûÀÎ/ÀϽÃÀûÀÎ JUnit Run/Debug ±¸¼ºÀ» ¼öÇàÇϰųª ±×°ÍÀ» ½ÇÇàÇϱâ

À§ÇØ ÀÓ½ÃÀûÀÎ ±¸¼ºÀ» »ý¼ºÇϽʽÿÀ.

Debug "JUnit

configuration"  

 

±âÁ¸ ¿µ±¸ÀûÀÎ/ÀϽÃÀûÀÎ JUnit Run/Debug ±¸¼ºÀ» µð¹ö±×Çϰųª ÀÓ½ÃÀûÀÎ ±¸¼ºÀ»

»ý¼ºÇÏ°í ±× µð¹ö±ëÀ» ½ÃÀÛÇϽʽÿÀ.

 

Test Result Tool Window  


JUnit
Å×½ºÆ® °á°ú´Â Run ¶Ç´Â Debug Åø À©µµ¿ìÀÇ Console ÅÇ¿¡¼­ Á¦°øµË´Ï´Ù.




Åø À©µµ¿ì´Â ´ÙÀ½ÀÇ ±¸¼º ¿ä¼Ò·Î ±¸¼ºµË´Ï´Ù:


Test tree view
, Output °ú Statistics ÅÇ ±×¸®°í µÎ °³ÀÇ Åø¹Ù.

Test tree view ´Â Æ®¸®¿Í °°Àº °èÃþÀ¸·Î¼­ ¸ðµç ÇöÀç ½ÇÇàµÈ Å×½ºÆ®¸¦ Á¦°øÇÕ´Ï´Ù.  Æ®¸® ³ëµå À̸§Àº Ŭ·¡½º/¸Þ¼Òµå À̸§À»

Å×½ºÆ®Çϱâ À§ÇØ ÀÏÄ¡ÇÕ´Ï´Ù.  Å×½ºÆ® ¸Þ¼Òµå¸¦ À§ÇØ ÃæºÐÈ÷ ÀÚ°ÝÀÌ ÁÖ¾îÁö´Â Ŭ·¡½º À̸§Àº Æ®¸® ³ëµå À̸§ÀÇ ¿·¿¡ Å« °ýÈ£¿¡

ÁÖ¾îÁý´Ï´Ù.  Å×½ºÆ® Ŭ·¡½º¸¦ À§ÇØ, ÆÐŰÁö¸í, Ŭ·¡½º°¡ À§Ä¡ÇÏ´Â °÷ÀÌ ½áÁý´Ï´Ù.

 

³ëµå ¿·ÀÇ ¾ÆÀÌÄÜÀº ±× »óŸ¦ ¹Ý¿µÇÕ´Ï´Ù:

Å×½ºÆ®´Â ¼º°øÀûÀ¸·Î Åë°úÇß½À´Ï´Ù.

Å×½ºÆ®´Â Ç¥¸í ¶Ç´Â ¿¹¿Ü ¶§¹®¿¡ ½ÇÆÐÇß½À´Ï´Ù.

Å×½ºÆ®´Â ¿À·ù ¶§¹®¿¡ ½ÇÆÐÇß½À´Ï´Ù.

Å×½ºÆ®´Â ½ÇÇàÇÏÁö ¾Ê¾Ò½À´Ï´Ù.

Å×½ºÆ®´Â Á¤ÁöµË´Ï´Ù.

Å×½ºÆ®´Â ÇöÀç ½ÇÇàÇϰí ÀÖ½À´Ï´Ù.

Å×½ºÆ®´Â ÁߴܵǾú½À´Ï´Ù.


·çÆ® ³ëµå´Â ´ÙÀ½ ¿ì¼± ¼øÀ§¿Í ÇÔ²² ÀÚ½Ä ³ëµåÀÇ "°¡Àå ³ª»Û" °á°ú¿¡ ºÎÇÕÇϰí ÀÖ´Â »óÅ ¾ÆÀÌÄÜÀ» Ç¥½ÃÇÕ´Ï´Ù:  

passednot run - running - interrupted - assertion failure - exception failure. 

º¸Åë Å×½ºÆ® Ŭ·¡½º´Â TestCase Ŭ·¡½º¸¦ È®ÀåÇϰí Å×½ºÆ® ¸Þ¼Òµå À̸§Àº test ´Ü¾î·Î ½ÃÀ۵˴ϴÙ.  ±×·¯³ª, ¶§¶§·Î ¸î °³ÀÇ Å×½ºÆ®

ÄÉÀ̽º°¡ »ç¿ëµÇ´Â °÷¿¡ Á¤ÀûÀÎ ¸Þ¼Òµå suite() °¡ ½ÇÇàµË´Ï´Ù.  ±×°ÍÀº Á¶±ÝÀÇ Æ¯Á¤ÀÇ Å¬·¡½º ÀνºÅϽºµµ °ü·ÃµÇÁö ¾Ê´Â ÇÑ ¼¼Æ®ÀÇ

Å×½ºÆ®¸¦ Çü¼ºÇϰí, °¢ Å×½ºÆ®°¡ ¾Æ´Ï¶ó ÀÏ´ÜÀÇ Å×½ºÆ®¸¦ °³º°ÀûÀ¸·Î °³½ÃÇÒ °Í ÀÔ´Ï´Ù.  

IDEA´Â Å×½ºÆ® Ŭ·¡½º·Î ºÐ·ùµÈ Å×½ºÆ® ¸Þ¼Òµå¸¦ Á¤È®ÇÏ°Ô Ç¥½ÃÇϰí suite() ´Â Àڽİú ÇÔ²² ³ëµå·Î¼­ Result tree view ¿¡¼­

³ªÅ¸³³´Ï´Ù.  ÀÚ½Ä ³ëµå´Â suite()  ³»ÀÇ Å×½ºÆ®ÀÔ´Ï´Ù.

¸¸ÀÏ ´ç½ÅÀÌ Hide Passed ÇÊÅͰ¡ °¡´ÉÇÏ°í ¸ðµç Å×½ºÆ®°¡ Ưº° ³ëµå¸¦ Åë°úµÇ¸é, All Tests Passed ´Â Å×½ºÆ® ½ÇÇàÀÇ ÃÖÁ¾¿¡

³ªÅ¸³³´Ï´Ù.



¸¸ÀÏ Output  ÅÇÀÌ ¿­¸®¸é, Æ®¸® º¸±â¿¡¼­ ¿ä¼Ò¸¦ ¼±ÅÃÇÏ´Â °ÍÀº °­Á¶µÈ Å×½ºÆ®¿¡ ÀÇÇØ »ý»êµÈ Ãâ·ÂÀ» Ç¥½ÃÇÕ´Ï´Ù.  

±×¸®°í ¸¸ÀÏ Statistics ÅÇÀÌ ¿­¸®¸é, ÅÇÀÇ »óÀÀÇÏ´Â ¶óÀÎÀº °­Á¶µÉ °ÍÀÔ´Ï´Ù.

Toolbars  

 

Left Toolbar  

 

ÇöÀçÀÇ JUnit ±¸¼ºÀ» Àç½ÇÇà ÇϽʽÿÀ.

ÇÁ·Î¼¼½º Ãâ·ÂÀ» ÁßÁöÇϽʽÿÀ.

ÇöÀçÀÇ JUnit ÇÁ·Î¼¼½º¸¦ Á¾·áÇϽʽÿÀ.

°á°ú Åø À©µµ¿ì¸¦ ´ÝÀ¸½Ê½Ã¿À.

ÇïÇÁ ÆäÀÌÁö¸¦ ¿±´Ï´Ù.

 

Upper Toolbar  

 

Hide passed  ¸Þ´º´Â Åë°úÇÑ Å×½ºÆ®¿¡ »óÀÀÇÏ´Â ³ëµå¸¦ ¼û±â±â À§ÇØ µðÀÚÀε˴ϴÙ.  

¸ðµç ½ÇÇà Å×½ºÆ®°¡ ¼º°øÀûÀ¸·Î Åë°úµÇ°í, »õ·Î¿î ³ëµå Ç׸ñ, All Tests Passed Àüü Æ®¸®¸¦ ġȯÇϸ鼭 ³ªÅ¸³³´Ï´Ù.

¸¸ÀÏ ´­¸®¸é Track Running Test ¹öư ÇöÀç ½ÇÇàµÇ´Â ³ëµå·Î Æ®¸® ¼±ÅÃÀ» À̵¿ÇÕ´Ï´Ù. ±×¸®°í µ¿½Ã¿¡

±× Ãâ·ÂÀ» Output tab¿¡¼­ º¸ÀÔ´Ï´Ù.

³ëµå Æ®¸®¸¦ È®Àå½ÃŰ½Ê½Ã¿À.  ´ÜÁö µÎ ¹øÂ° ·¹º§ ºÐ±â°¡ ¿µÇâÀ» ¹Þ½À´Ï´Ù.

³ëµå Æ®¸®¸¦ Ãà¼Ò½ÃŰ½Ê½Ã¿À.  ´ÜÁö µÎ ¹øÂ° ·¹º§ ºÐ±â´Â ¿µÇâÀ» ¹Þ½À´Ï´Ù. ±×·¯³ª, ·çÆ® ³ëµå´Â ´ÜÁö ÇÊ¿äÇÑ ³ëµå¸¦

´õºí Ŭ¸¯ÇÏ´Â °Í¿¡ ÀÇÇØ Ãà¼ÒµÉ ¼ö ÀÖ½À´Ï´Ù.

Æ®¸® º¸±â¿¡¼­ ÀÌÀüÀÇ ½ÇÆÐÇÑ Å×½ºÆ®·Î ³×ºñ°ÔÀÌÆ® ÇϽʽÿÀ.

Æ®¸® º¸±â¿¡¼­ ´ÙÀ½ÀÇ ½ÇÆÐÇÑ Å×½ºÆ®·Î ³×ºñ°ÔÀÌÆ® ÇϽʽÿÀ.

¸¸ÀÏ Select First Failed Test When Finished °¡ ´­¸®¸é, ij·µÀº Æ®¸® º¸±â¿¡ ÃÖ°íÀÇ ½ÇÆÐÇÑ Å×½ºÆ®ÀÇ ÂÊÀ¸·Î

ÀÚµ¿ÀûÀ¸·Î ¿Å°ÜÁý´Ï´Ù ¶ÇÇÑ ±× Ãâ·ÂÀº Output tab ¿¡¼­ Ç¥½ÃµË´Ï´Ù.

¸¸ÀÏ Scrolls to Stacktrace°¡ ´­¸®¸é, Output tab ¿¡¼­ Å×½ºÆ® ½ÇÆÐ¸¦ ¾ß±âÇÑ °ÍÀ» À§ÇÏ¿© ¿¹¿Ü/Ç¥¸í ½ºÅà ÃßÀûÀÇ

½ÃÀÛÀ¸·Î ½ºÅà Ãßô Ãâ·ÂÀ» ½ºÅ©·Ñ ÇÕ´Ï´Ù.

¸¸ÀÏ Autoscroll to Source °¡ ´­¸®¸é, Test tree view ¿¡¼­ Å×½ºÆ®¸¦ ¼±ÅÃÇÏ¸é ¿¡µðÅÍ¿¡¼­ ¼Ò½ºÆÄÀÏ (ÇÊ¿äÇÏ´Ù¸é

±×°ÍÀ» ¿­¸é¼­)·Î ³×ºñ°ÔÀÌÆ®ÇÕ´Ï´Ù. ¿¡µðÅÍ¿¡¼­ Å×½ºÆ®ÀÇ Ã¹ ¹øÂ° ¶óÀÎ À§¿¡¼­ ij·µÀ» ¹èÄ¡Çß½À´Ï´Ù.

¸¸ÀÏ Open Source at Exception °¡ ´­¸®¸é, ¿­¸®´Â ¼Ò½º ÄÚµå (View source, Edit source, Autoscroll to

source)°¡ ½ÇÆÐÇÑ Äڵ尡 ºÒ·ÁÁ³´ø Å×½ºÆ® ¸Þ¼Òµå ¶óÀο¡ ij·µÀ» ³õ½À´Ï´Ù (°°Àº È¿°ú´Â ½ºÅà ÃßÀû¿¡¼­ Å×½ºÆ® ¸Þ¼Òµå

¶óÀÎÀ» Ŭ¸¯ÇÏ´Â °Í¿¡ ÀÇÇØ ´Þ¼ºµÉ ¼ö ÀÖ½À´Ï´Ù).

 

Test Status Panel  


Test Status ÆÐ³ÎÀº  Å×½ºÆ® »óȲ Output ¿Í Statistics À§¿¡ À§Ä¡ÇÕ´Ï´Ù.



±×°ÍÀº ÇöÀçÀÇ Å×½ºÆ® ±¸¼ºÀ» À§ÇØ »óŸ¦ ¹Ý¿µÇÕ´Ï´Ù:

Starting  

°úÁ¤ÀÌ Å×½ºÆ®¿¡¼­ Á¶±Ýµµ ½ÃÀÛµÇÁö ¾Ê¾Ò´ø Å×½ºÆ®°¡ ÀÖ¾ú´ø ¶§¸¦ Ç¥½ÃÇßÁö¸¸ ½ÃÀÛÇß½À´Ï´Ù.

Running  

Å×½ºÆ®°¡ ½ÇÇàµÈ ¶§¸¦ Ç¥½ÃÇß½À´Ï´Ù.  µ¿½Ã¿¡ µÎ ±×¸²ÀÌ ÁÖ¾îÁý´Ï´Ù.  Ã¹ ¹øÂ°´Â ¾ó¸¶³ª ¸¹Àº Å×½ºÆ®°¡ ÀÌ¹Ì ¼öÇàµÇ¾ú´Â°¡¸¦ º¸¿©ÁÖ°í µÎ ¹øÂ°´Â Å×½ºÆ®ÀÇ Àüü ¼ýÀÚÀÔ´Ï´Ù.

¸¹Àº Å×½ºÆ®°¡ ¹ú½á Á¸ÀçÇß´ø ù¹øÂ° Ç¥½Ã°¡ ¼öÇàµÇ¸é¼­, ÃÊ´Â Å×½ºÆ®ÀÇ ÇÕ°è¼öÀÔ´Ï´Ù.

¸¸ÀÏ ¾î¶² ½ÇÆÐÇÑ Å×½ºÆ®°¡ ÀÖÀ¸¸é, ½ÇÆÐÇÑ Å×½ºÆ®ÀÇ ÃѰ踦 ¶ÇÇÑ Ç¥½ÃÇÏ´Â Failed ·¹À̺í°ú ÇÔ²² Ç¥½ÃµË´Ï´Ù. ÇöÀç ½ÇÇàÇϰí ÀÖ´Â Å×½ºÆ®ÀÇ À̸§ÀÌ ¶ÇÇÑ Ç¥½ÃµË´Ï´Ù.

Terminated  

¸¸ÀÏ Å×½ºÆ® ½ÇÇàÀÌ »ç¿ëÀÚ¿¡ ÀÇÇØ ÁߴܵǸé Ç¥½ÃµË´Ï´Ù. ±×¸²Àº Running¿¡ °üÇØ¼­´Â °°Àº °ÍÀ» ÀǹÌÇÕ´Ï´Ù.

Done  

¸ðµç Å×½ºÆ®°¡ ½ÇÇàµÇ¾ú´ø ¶§¸¦ Ç¥½ÃÇß½À´Ï´Ù. ±×¸²Àº Running ·¹ÀÌºí °üÇØ¼­´Â °°Àº °ÍÀ» ÀǹÌÇÕ´Ï´Ù. ¶ÇÇÑ ÅäÅÐ ½Ã°£À» ¸ðµç Å×½ºÆ®¿¡ ÇÕ°ÝÇϱâ À§ÇØ Ç¥½ÃÇÏ´Â ¶Ç ´Ù¸¥ ·¹À̺íÀÌ ³ªÅ¸³³´Ï´Ù.

 

Progress Bar  


Progress Bar ´Â ¾ó¸¶³ª ¸¹Àº Å×½ºÆ®°¡ µÇ¾ú´ø°¡¸¦ Ç¥½ÃÇÕ´Ï´Ù.  ±×°ÍÀº ´ÙÀ½ »öÀ» °¡Áú ¼ö ÀÖ½À´Ï´Ù:

Green  

¸¸ÀÏ ¸ðµç ¼öÇàµÈ Å×½ºÆ®°¡ ÁÁ°Ô Åë°úµÇ¾ú´Ù¸é (Å×½ºÆ®ÀÇ ¾î´Â °Íµµ ½ÇÆÐÇÏÁö ¾Ê¾Ò´Ù¸é)

Yellow  

¸¸ÀÏ Å×½ºÆ® ½ÇÇàÀÌ »ç¿ëÀÚ¿¡ À§ÇØ Áߴܵǰí ÀÌ¹Ì ¼öÇàµÈ Å×½ºÆ®ÀÇ ¾î´À °Íµµ ½ÇÇØÇÏÁö ¾Ê¾ÒÀ¸¸é.

Red  

¸¸ÀÏ ½ÇÆÐÇÑ Å×½ºÆ®°¡ ÀÖÀ¸¸é.

 

Output Tab  


Output tab Àº Å×½ºÆ® ½ÇÇà µ¿¾È »ý¼ºµÈ Á¤º¸¸¦ Ç¥½ÃÇÕ´Ï´Ù.  ·çÆ® ³ëµå°¡ Test tree view¿¡¼­ ¼±ÅÃµÉ ¶§ÅÇÀº ¿À·ù ¸Þ½ÃÁö

»Ó¸¸ ¾Æ´Ï¶ó ¸í·É ¶óÀÎ, ¸ðµç Å×½ºÆ®ÀÇ Ãâ·ÂÀ» Ç¥½ÃÇÕ´Ï´Ù. ±×¸®°í ¸¸ÀÏ ¾î¶² ´Ù¸¥ ³ëµå°¡ ¼±ÅõǸé, ¿ÀÁ÷ ¼±ÅÃµÈ ³ëµå¿¡ ´ëÇÑ

Ãâ·Â°ú ¿À·ù ¸Þ½ÃÁö¿Í ±× ÀÚ½ÄÀº º¸¿©Áý´Ï´Ù. °¢ ¿À·ù´Â ¸µÅ©¸¦ µ¿¹ÝÇÕ´Ï´Ù.  

±×°ÍÀ» Ŭ¸¯ÇÏ¸é ´ç½ÅÀº ¿¡µðÅÍ¿¡¼­ ij·µÀ» ¼³Á¤ÇÏ´Â »óÀÀÇÏ´Â ¶óÀο¡ ³×ºñ°ÔÀÌÆ®ÇÕ´Ï´Ù.



¹®ÀÚ¿­ ºñ±³ ÈÄÀÇ Ç¥¸íÀÌ ¹ß»ýÇÒ ¶§, Ãâ·ÂÀº ¾à°£ ´Ù¸¨´Ï´Ù.  ½Ì±Û ¶óÀÎÀÇ ¹®ÀÚ¿­ÀÌ ºñ±³µÉ ¶§, ¹®ÀÚ´Â Ãâ·Â ¸Þ½ÃÁö¿¡¼­ Á¤·ÄµË´Ï´Ù.



¸ÖƼ¶óÀÎ ¹®ÀÚ¿­(Áï "\nÀ» Æ÷ÇÔÇÏ´Â ±×°Íµé)ÀÌ ÀÖÀ» ¶§, Ãâ·ÂÀº ¸µÅ©¸¦ Æ÷ÇÔÇÕ´Ï´Ù.  ¸µÅ©¸¦ Ŭ¸¯ÇÏ¸é ¹®ÀÚ¿­ »çÀÌ¿¡¼­ Â÷À̸¦ º¸±â

À§ÇÏ¿©  Difference View¸¦ ºÎ¸¨´Ï´Ù.

Statistics tab  


Statistics ÅÇÀº ÇöÀçÀÇ ½ÇÇà/µð¹ö±× ±¸¼ºÀ» À§ÇØ ¿©·¯ °¡Áö Åë°è µ¥ÀÌÅ͸¦ Ç¥½ÃÇÕ´Ï´Ù.

Test  

½ÇÇàµÇ¾ú´ø ¸ðµç Å×½ºÆ®¸¦ À§ÇØ Çհ踦 Ç¥½ÃÇϴ ù ¹øÂ° ¶óÀÎÀ» Á¦¿ÜÇϰí ÀÌ ¼½¼ÇÀº Å×½ºÆ®¸íÀ» Ç¥½ÃÇÕ´Ï´Ù.

Time elapsed  

Å×½ºÆ®¸¦ ½ÇÇàÇϱâ À§ÇØ °æ°úÇÑ ½Ã°£.  Total °ªÀº ¸ðµç Å×½ºÆ®ÀÇ ÇÕ°è ½Ã°£ÀÔ´Ï´Ù.

Usage Before  

Å×½ºÆ®¸¦ ½ÇÇàÇϱâ ÀüÀÇ RAM »ç¿ë.

Usage Delta  

Å×½ºÆ®¸¦ ½ÇÇàÇϱâ ÀüÈÄÀÇ RAM »ç¿ëÀÇ Â÷ÀÌ.  °ªÀÌ (RAM-after-test - RAM-before-test)·Î °è»êµË´Ï´Ù.

 

¿¹¸¦ µé¸é, ¸¸ÀÏ gc °¡ Å×½ºÆ® ½ÇÇà µ¿¾È Âø¼öµÇ¸é, µ¨Å¸ °ªÀº ³×°ÅƼºêÀÏ ¼ö ÀÖ½À´Ï´Ù.

Usage After  

Å×½ºÆ®¸¦ ½ÇÇàÇÏ°í ³­ ÈÄÀÇ RAM »ç¿ë.

Results  

ÀÌ Ä®·³Àº Å×½ºÆ® ½ÇÇàÀÇ °á°ú¸¦ Ç¥½ÃÇÕ´Ï´Ù.  ±×°ÍÀº Passed, Error, AssertionÀÌ µÉ °Í ÀÔ´Ï´Ù.

Total ¶óÀÎ ¶Ç´Â ¾î¶² º¹ÇÕ Å×½ºÆ®¿¡ ´ëÇÑ ¶óÀÎÀº Ç¥¸í(F), ¿¹¿Ü(E), ¼º°øÀûÀÎ Åë°ú(P) ·Î

¾ó¸¶³ª ¸¹Àº Å×½ºÆ®°¡ ½ÇÆÐÇߴ°¡¸¦ º¸¿©ÁÝ´Ï´Ù.


ÅÇ¿¡¼­ ¶óÀÎÀ» ¼±ÅÃÇÏ¸é Æ®¸® º¸±â¿¡¼­ »óÀÀÇÏ´Â ¿ä¼Ò¸¦ ¼±ÅÃÇÕ´Ï´Ù.  ±×¸®°í ´ç½ÅÀº ÅÇ¿¡¼­ Ä®·³À» ±×µéÀÇ Ä®·³ ¼ø¼­¸¦

Ä¿½ºÅ͸¶ÀÌÁîÇϱâ À§ÇØ µå·¡±× & µå·ÓÇÒ ¼ö ÀÖ½À´Ï´Ù.


Context menus   


¹®¸Æ ¸Þ´º´Â Test tree view¿¡¼­ ³ëµå¸¦ ¶Ç´Â Statistics ÅÇ¿¡¼­ ¿ä¼Ò¸¦  ¿À¸¥ÂÊ ¹öưÀ» Ŭ¸¯ÇÏ´Â °Í¿¡ ÀÇÇØ ºÒ·ÁÁý´Ï´Ù. 

Run "JUnit

Configuration"  

 above ÀÇ ¼³¸íÀ» º¸½Ê½Ã¿À

Debug "JUnit

configuration"  

 

 above ÀÇ ¼³¸íÀ» º¸½Ê½Ã¿À

Jump to Source  

¸¸ÀÏ ¼±ÅõǸé, ¿¡µðÅÍ¿¡¼­ Å×½ºÆ® ¼±¾ð ¶óÀο¡ ij·µÀ» ¹èÄ¡Çϰí ÀÖ´Â

¼±ÅÃµÈ Å×½ºÆ®¸¦ ³×ºñ°ÔÀÌÆ®Çϰí, ÃÊÁ¡À» °Å±â¿¡ ¿Å±é´Ï´Ù.

Show Source  

¸¸ÀÏ ¼±ÅõǸé, ¿¡µðÅÍ¿¡¼­ Å×½ºÆ® ¼±¾ð ¶óÀο¡ ij·µÀ» ¹èÄ¡Çϰí ÀÖ´Â

¼±ÅÃµÈ Å×½ºÆ®¸¦ ³×ºñ°ÔÀÌÆ®ÇÕ´Ï´Ù.

±×·¯³ª ÃÊÁ¡Àº JUnit Result Tool Window¿¡¼­ À¯ÁöµË´Ï´Ù.

Select in Tree  

¿ä¼Ò´Â Statistics ÅÇ¿¡¼­¸¸ ³ªÅ¸³³´Ï´Ù.  ¸¸ÀÏ ¼±ÅõǸé, Test tree view¿¡¼­

¼±ÅÃµÈ °Í¿¡°Ô ºÎÇÕÇϰí ÀÖ´Â ¿ä¼Ò¸¦ ¼±ÅÃÇÕ´Ï´Ù.


Output ÅÇ ¹®¸Æ ¸Þ´º´Â ´ÙÀ½ÀÇ µÎ Ç׸ñÀ» Æ÷ÇÔÇÕ´Ï´Ù:

Clear All  

Ãâ·Â âÀ» Á¦°ÅÇÕ´Ï´Ù.

Copy Content  

Ãâ·ÂÀ» Ŭ¸³º¸µå¿¡ Ä«ÇÇÇϽʽÿÀ.

 

Advanced features  


´ÙÀ½ ¼³¸íÀº ÀϺΠJava »ùÇÃÀ» ÀÌ¿ëÇÕ´Ï´Ù.  ¿ÏÀü ÄÚµå´Â ¾Æ·¡¿¡ Á¦°øµË´Ï´Ù.

1.  ÄÝ·º¼ÇÀ» ºñ±³ÇÏ´Â °Í

Ưº°ÇÑ »ç¿ë ÄÉÀ̽º°¡ ÀÖ½À´Ï´Ù:  Difference View ´Â ÄÝ·º¼ÇÀ» ºñ±³Çϱâ À§ÇØ »ç¿ëµÉ ¼ö ÀÖ½À´Ï´Ù.  

´ç½ÅÀº ±×µéÀ» ¸ÖƼ¶óÀÎ ¹®ÀÚ¿­·Î º¯È¯Çϰí assertEquals(String, String)¸¦ ºÎ¸¦ ¼ö ÀÖ½À´Ï´Ù.

2.  Ưº°ÇÑ »ç¿ë ÄÉÀ̽º:

o»ç¿ë ÄÉÀ̽ºÅ×½ºÆ® ÀڷḦ ÆÄÀÏ¿¡ ÀúÀåÇÏ´Â °Í.

°æ¿ì¸¦ Á¸ÁßÇÏÁö ¾ÊÀº String Collection À» ¼ÒÆ®ÇÏ´Â »ùÇà Äڵ带 »ý¼ºÇϽʽÿÀ.  

Å×½ºÆ® µ¥ÀÌÅÍ´Â ÆÄÀÏ, Å×½ºÆ®(ù ¹øÂ°´Â ¼ÒÆ®µÈ ÄÝ·º¼Ç, µÎ ¹øÂ°´Â ¼ÒÆÃ °á°ú)¿¡ µû¶ó µÎ ÆÄÀϷμ­ Á¦°øµË´Ï´Ù.  

IDEA´Â Å×½ºÆ® ¸íÀ» Àý´ë ÆÄÀÏ °æ·Î·Î °£ÁÖÇÒ ¼ö ÀÖ½À´Ï´Ù.

 

 Ã¹ ¹øÂ°·Î, ¿ì¸®´Â Å×½ºÆ® ÀڷḦ Æú´õ¿¡¼­ ¹ß°ßÇϱâ À§ÇØ º¸Á¶ ¸Þ¼Òµå°¡ ÇÊ¿äÇÕ´Ï´Ù.  

 
public class FSUtil {
 
  public static final String IN_EXTENSION = ".in";
  public static final String OUT_EXTENSION = ".out";
 
public static String[] findTests(File testData) {
    File[] inputs = testData.listFiles(new FilenameFilter() {
        public boolean accept(File dir, String name) {
          return name.endsWith(IN_EXTENSION);
        }
      });
    String[] names = new String[inputs.length];
    for (int i = 0; i < inputs.length; i++) { File inputFile = inputs[i]; String inputNameExt =
 inputFile.getName(); String inputName = inputNameExt.substring(0, inputNameExt.length() – 
IN_EXTENSION.length()); names[i] = inputName; } return names;
  }
}

 

»çÀü Á¤ÀÇÀÇ È®ÀåÀÌ ÀÖ´Â ÆÄÀÏÀº testData µð·ºÅ͸®¿¡¼­ °Ë»öµË´Ï´Ù.  

ÀÌÀüÀÇ ÄÚµå¿Í ÇÔ²² ¾ò¾îÁö´Â ÆÄÀϸíÀ» À§ÇØ, Å×½ºÆ®´Â »ý¼ºµÇ°í, TestSuite¿¡ Ãß°¡µË´Ï´Ù.

 
public class SortTestSuite extends TestSuite {
  public SortTestSuite() {
    super("Sort tests"); // Suite node name in tree view
    File testData = new File(".");
    String[] tests = FSUtil.findTests(testData);
    for (int i = 0; i < tests.length; i++) { String test = tests[i]; addTest(new MyTestCase(test,
 testData){});
    }
  }
 
  public static Test suite() {
    return new SortTestSuite();
  }
}



MyTestCase
´Â ÇϳªÀÇ Å×½ºÆ® ¸Þ¼Òµå¸¦ °¡Áö´Â Ŭ·¡½ºÀÔ´Ï´Ù:  

 
public void test() throws IOException { // Test method to run
    String[] result = new Sort().sort(readStrings(input));
    assertEquals(toLines(readStrings(output)), toLines(result));
}
 
¿ì¸®´Â Sort  Ŭ·¡½º¿¡ À־ÀÇ sort()  ¸Þ¼Òµå¸¦ Å×½ºÆ®Çϰí ÀÖ½À´Ï´Ù. 
 
public class Sort {
   public String[] sort(String[] strings) { //dummy sort method
    Arrays.sort(strings);
    return strings;
  }
}
 

inputÀº ¼ÒÆ®µÈ ¹®ÀÚ¿­À» Æ÷ÇÔÇϰí ÀÖ´Â ÇʵåÀÔ´Ï´Ù, output Àº ¿¹»óµÇ´Â ¼ÒÆÃ °á°úÀÔ´Ï´Ù.

readStrings() ´Â ÆÄÀϷκÎÅÍÀÇ ¹®ÀÚ¿­À» Àаí, ¹®ÀÚ¿­ ¹è¿­À» »ý»êÇÕ´Ï´Ù.
toLines()
´Â ¹®ÀÚ¿­ ¹è¿­À» ¸ÖƼ¶óÀÎ ¹®ÀÚ¿­·Î ¹Ù²ß´Ï´Ù.

 
public abstract class MyTestCase extends TestCase {
  private final String name;
  private final File input;
  private final File output;
 
  public MyTestCase(String name, File parentDirectory) {
    super("test"); // Passing test method name
    this.input = new File(parentDirectory, name + FSUtil.IN_EXTENSION);
    this.output = new File(parentDirectory, name + FSUtil.OUT_EXTENSION);
    try {
      this.name = this.input.getCanonicalPath();
    } catch (IOException e) {
      throw new RuntimeException(e);
    }
  }
 
  public void test() throws IOException { // Test method to run
    String[] result = new Sort().sort(readStrings(input));
    assertEquals(toLines(readStrings(output)), toLines(result));
  }
 
  private String toLines(String[] strings) {
    StringBuffer buffer = new StringBuffer();
    for (int i = 0; i < strings.length; i++) { String string = strings[i]; buffer.append(string);
 buffer.append(System.getProperty("line.separator")); } return buffer.toString();
  }
 
  private String[] readStrings(File file) throws IOException {
    BufferedReader reader = new BufferedReader(new FileReader(file));
    String line;
        ArrayList lines = new ArrayList();
    while ((line = reader.readLine()) != null) {
      lines.add(line);
    }
    return (String[])lines.toArray(new String[lines.size()]);
  }
 
  public String getName() { // Test representation in tree view
    try {
        return input.getCanonicalPath();
    } catch (IOException e) {
        return super.getName();
    }
 }
}  

  
  

Result tree view ÀÇ ³ëµå¸íÀº º¯°æµÉ ¼ö ÀÖ°í, getName() ÄÝÀÇ Ãâ·ÂÀ¸·Î¼­ Ç¥½ÃµË´Ï´Ù.

 

getName()  ¸Þ¼Òµå´Â ÃÖÃÊÀÇ ÀÔ·Â µ¥ÀÌÅÍ¿Í ÇÔ²² ÆÄÀÏ¿¡ Áï ¼ÒÆ®µÈ ÄÝ·º¼ÇÀ¸·Î Àý´ë °æ·Î¸¦ ¸®ÅÏÇϱâ À§ÇØ

¿À¹ö¶óÀÌµå µË´Ï´Ù.

o                        »ç¿ë ÄÉÀ̽º – °í¼Ó Å×½ºÆ® »ý¼º
¸¸ÀÏ Å×½ºÆ® ¼öÇà/µð¹ö±ëÀÇ ½ÃÀÛ¿¡¼­ ¼±¾ðµÈ °Íº¸´Ù ´õ ¸¹Àº Å×½ºÆ®°¡ ÀÖ´Ù¸é IDEA´Â Á¤È®ÇÏ°Ô ÇÁ·Î¼¼½º ÇÕ´Ï´Ù.

 

public class SortTest implements Test {
public int countTestCases() {
return 0;
}
 
public void run(TestResult testResult) {
File testData = new File(".");
String[] names = FSUtil.findTests(testData);
for (int i = 0; i < names.length; i++) { String name = names[i]; new MyTestCase(name, testData){}.run(testResult);
}
}
 
public static Test suite() {
return new SortTest();
}
}
    

countTestCases()´Â Á¦·Î¸¦ ¸®ÅÏÇÕ´Ï´Ù ¿Ö³ÄÇÏ¸é ¿ì¸®´Â ¾ó¸¶³ª ¸¹Àº µ¥½ºÆ® ÆÄÀÏÀÌ ¹ß°ßµÇ´ÂÁö, ¾ó¸¶³ª ¸¹Àº Å×½ºÆ®°¡ ½ÇÇàµÇ´ÂÁö¿¡ ´ëÇØ °ü½ÉÀ» µÎÁö ¾Ê±â ¶§¹® ÀÔ´Ï´Ù.

run() Àº ½ÇÁ¦·Î Å×½ºÆ®¸¦ ½ºÄ³´×, »ý¼ºÇÏ°í ½ÃÀÛ ÇÕ´Ï´Ù.


ù ¹øÂ°·Î, ±×°ÍÀÌ ¼±¾ðµÇ¾ú´ø °Íº¸´Ù Å×½ºÆ®¸¦ ½ÇÇàÇÏ´Â ½ÇÁ¦ ·®Àº ³ô½À´Ï´Ù.  µû¶ó¼­, IDEA´Â ¾ó¸¶³ª ¸¹Àº Å×½ºÆ®°¡ Âø¼öµÇ¾ú´øÁö °¡¸£Ä¨´Ï´Ù. ±×·¯³ª ¸¹Àº Å×½ºÆ®°¡ Á¸ÀçÇß´ø ¸Þ¼Òµå´Â óÀ½¿¡ ¼±¾ðÇÏÁö ¾Ê¾Ò½À´Ï´Ù. µÎ ¹øÂ°·Î, Å×½ºÆ®´Â ±×µéÀÇ Å¬·¡½º¿¡ µû¶ó ¸ðÀ¸°Ô µË´Ï´Ù.