µ¥Ôª²âÊÔÊDZàд²âÊÔ´úÂ룬ÓÃÀ´¼ì²âÌØ¶¨µÄ¡¢Ã÷È·µÄ¡¢Ï¸¿ÅÁ£µÄ¹¦ÄÜ¡£µ¥Ôª²âÊÔ²¢²»Ò»¶¨±£Ö¤³ÌÐò¹¦ÄÜÊÇÕýÈ·µÄ£¬¸ü²»±£Ö¤ÕûÌåÒµÎñÊÇ×¼±¸µÄ¡£
µ¥Ôª²âÊÔ²»½ö½öÓÃÀ´±£Ö¤µ±Ç°´úÂëµÄÕýÈ·ÐÔ£¬¸üÖØÒªµÄÊÇÓÃÀ´±£Ö¤´úÂëÐÞ¸´¡¢¸Ä½ø»òÖØ¹¹Ö®ºóµÄÕýÈ·ÐÔ¡£
Ò»°ãÀ´Ëµ£¬µ¥Ôª²âÊÔÈÎÎñ°üÀ¨

JUNIT
JUnitÊÇJavaµ¥Ôª²âÊÔ¿ò¼Ü£¬ÒѾÔÚEclipseÖÐĬÈϰ²×°¡£Ä¿Ç°Ö÷Á÷µÄÓÐJUnit3ºÍJUnit4¡£JUnit3ÖУ¬²âÊÔÓÃÀýÐèÒª¼Ì³ÐTestCaseÀà¡£JUnit4ÖУ¬²âÊÔÓÃÀýÎÞÐè¼Ì³ÐTestCaseÀֻ࣬ÐèҪʹÓÃ@TestµÈ×¢½â¡£
Junit3
ÏÈ¿´Ò»¸öJunit3µÄÑùÀý
// ²âÊÔjava.lang.Math 2.// ±ØÐë¼Ì³ÐTestCase 3.public class Junit3TestCase extends TestCase { 4. public Junit3TestCase() { 5. super(); 6. } 7. 8. // ´«Èë²âÊÔÓÃÀýÃû³Æ 9. public Junit3TestCase(String name) { 10. super(name); 11. } 12. 13. // ÔÚÿ¸öTestÔËÐÐ֮ǰÔËÐÐ 14. @Override 15. protected void setUp() throws Exception { 16. System.out.println("Set up"); 17. } 18. // ²âÊÔ·½·¨¡£ 19. // ·½·¨Ãû³Æ±ØÐëÒÔtest¿ªÍ·£¬Ã»ÓвÎÊý£¬ÎÞ·µ»ØÖµ£¬Êǹ«¿ªµÄ£¬¿ÉÒÔÅ׳öÒì³£ 20. // Ò²¼´ÀàËÆpublic void testXXX() throws Exception {} 21. public void testMathPow() { 22. System.out.println("Test Math.pow"); 23. Assert.assertEquals(4.0, Math.pow(2.0, 2.0)); 24. } 25. 26. public void testMathMin() { 27. System.out.println("Test Math.min"); 28. Assert.assertEquals(2.0, Math.min(2.0, 4.0)); 29. } 30. 31. // ÔÚÿ¸öTestÔËÐÐÖ®ºóÔËÐÐ 32. @Override 33. protected void tearDown() throws Exception { 34. System.out.println("Tear down"); 35. } 36.}
|
Èç¹û²ÉÓÃĬÈϵÄTestSuite£¬Ôò²âÊÔ·½·¨±ØÐëÊÇpublic void
testXXX() [throws Exception] {}µÄÐÎʽ£¬²¢ÇÒ²»ÄÜ´æÔÚÒÀÀµ¹ØÏµ£¬ÒòΪ²âÊÔ·½·¨µÄµ÷ÓÃ˳ÐòÊDz»¿ÉÔ¤ÖªµÄ¡£
ÉÏÀýÖ´Ðк󣬿ØÖÆÌ¨»áÊä³ö
1.Set up 2.Test Math.pow 3.Tear down 4.Set up 5.Test Math.min 6.Tear down
|
´ÓÖУ¬¿ÉÒԲ²⵽£¬¶ÔÓÚÿ¸ö²âÊÔ·½·¨£¬µ÷ÓõÄÐÎʽÊÇ£º
1.testCase.setUp(); 2.testCase.testXXX(); 3.testCase.tearDown();
|
ÔËÐвâÊÔ·½·¨
ÔÚEclipseÖУ¬¿ÉÒÔÖ±½ÓÔÚÀàÃû»ò²âÊÔ·½·¨ÉÏÓÒ»÷£¬ÔÚµ¯³öµÄÓÒ»÷²Ëµ¥ÖÐÑ¡ÔñRun
As -> JUnit Test¡£
ÔÚMvnÖУ¬¿ÉÒÔÖ±½Óͨ¹ýmvn testÃüÁîÔËÐвâÊÔÓÃÀý¡£
Ò²¿ÉÒÔͨ¹ýJava·½Ê½µ÷Ó㬴´½¨Ò»¸öTestCaseʵÀý£¬È»ºóÖØÔØrunTest()·½·¨£¬ÔÚÆä·½·¨ÄÚµ÷ÓòâÊÔ·½·¨£¨¿ÉÒÔ¶à¸ö£©¡£
1.TestCase test = new Junit3TestCase("mathPow") { 2. // ÖØÔØ 3. protected void runTest() throws Throwable { 4. testMathPow(); 5. }; 6.}; 7.test.run();
|
¸ü¼Ó±ã½ÝµØ£¬¿ÉÒÔÔÚ´´½¨TestCaseʵÀýʱֱ½Ó´«Èë²âÊÔ·½·¨Ãû³Æ£¬JUnit»á×Ô¶¯µ÷Óô˲âÊÔ·½·¨£¬Èç
1.TestCase test = new Junit3TestCase("testMathPow"); 2.test.run();
|
Junit TestSuite
TestSuiteÊDzâÊÔÓÃÀýÌ×¼þ£¬Äܹ»ÔËÐйý¸ö²âÊÔ·½·¨¡£Èç¹û²»Ö¸¶¨TestSuite£¬»á´´½¨Ò»¸öĬÈϵÄTestSuite¡£Ä¬ÈÏTestSuite»áɨÃ赱ǰÄÚÖеÄËùÓвâÊÔ·½·¨£¬È»ºóÔËÐС£
Èç¹û²»Ïë²ÉÓÃĬÈϵÄTestSuite£¬Ôò¿ÉÒÔ×Ô¶¨ÒåTestSuite¡£ÔÚTestCaseÖУ¬¿ÉÒÔͨ¹ý¾²Ì¬·½·¨suite()·µ»Ø×Ô¶¨ÒåµÄsuite¡£
import junit.framework.Assert; 2.import junit.framework.Test; 3.import junit.framework.TestCase; 4.import junit.framework.TestSuite; 5. 6.public class Junit3TestCase extends TestCase { 7. //... 8. public static Test suite() { 9. System.out.println("create suite"); 10. TestSuite suite = new TestSuite(); 11. suite.addTest(new Junit3TestCase("testMathPow")); 12. return suite; 13. } 14.}
|
ÔÊÐíÉÏÊö·½·¨£¬¿ØÖÆÌ¨Êä³ö
дµÀ
create suite Set up Test Math.pow Tear down |
²¢ÇÒÖ»ÔËÐÐÁËtestMathPow²âÊÔ·½·¨£¬¶øÃ»ÓÐÔËÐÐtestMathMin²âÊÔ·½·¨¡£Í¨¹ýÏÔʽָ¶¨²âÊÔ·½·¨£¬¿ÉÒÔ¿ØÖƲâÊÔÖ´ÐеÄ˳Ðò¡£
Ò²¿ÉÒÔͨ¹ýJavaµÄ·½Ê½´´½¨TestSuite£¬È»ºóµ÷ÓÃTestCase£¬Èç
// ÏÈ´´½¨TestSuite£¬ÔÙÌí¼Ó²âÊÔ·½·¨ 2.TestSuite testSuite = new TestSuite(); 3.testSuite.addTest(new Junit3TestCase("testMathPow")); 4. 5.// »òÕß ´«ÈëClass£¬TestSuite»áɨÃèÆäÖеIJâÊÔ·½·¨¡£ 6.TestSuite testSuite = new TestSuite(Junit3TestCase.class,Junit3TestCase2.class,Junit3TestCase3.class); 7. 8.// ÔËÐÐtestSuite 9.TestResult testResult = new TestResult(); 10.testSuite.run(testResult);
|
testResultÖб£´æÁ˺ܶà²âÊÔÊý¾Ý£¬°üÀ¨ÔËÐвâÊÔ·½·¨ÊýÄ¿(runCount)µÈ¡£
JUnit4
ÓëJUnit3²»Í¬£¬JUnit4ͨ¹ý×¢½âµÄ·½Ê½À´Ê¶±ð²âÊÔ·½·¨¡£Ä¿Ç°Ö§³ÖµÄÖ÷Ҫע½âÓУº
@BeforeClass È«¾ÖÖ»»áÖ´ÐÐÒ»´Î£¬¶øÇÒÊǵÚÒ»¸öÔËÐÐ
@Before ÔÚ²âÊÔ·½·¨ÔËÐÐ֮ǰÔËÐÐ
@Test ²âÊÔ·½·¨
@After ÔÚ²âÊÔ·½·¨ÔËÐÐÖ®ºóÔÊÐí
@AfterClass È«¾ÖÖ»»áÖ´ÐÐÒ»´Î£¬¶øÇÒÊÇ×îºóÒ»¸öÔËÐÐ
@Ignore ºöÂÔ´Ë·½·¨
ÏÂÃæ¾ÙÒ»¸öÑùÀý£º
import org.junit.After; 2.import org.junit.AfterClass; 3.import org.junit.Assert; 4.import org.junit.Before; 5.import org.junit.BeforeClass; 6.import org.junit.Ignore; 7.import org.junit.Test; 8. 9.public class Junit4TestCase { 10. 11. @BeforeClass 12. public static void setUpBeforeClass() { 13. System.out.println("Set up before class"); 14. } 15. 16. @Before 17. public void setUp() throws Exception { 18. System.out.println("Set up"); 19. } 20. 21. @Test 22. public void testMathPow() { 23. System.out.println("Test Math.pow"); 24. Assert.assertEquals(4.0, Math.pow(2.0, 2.0), 0.0); 25. } 26. 27. @Test 28. public void testMathMin() { 29. System.out.println("Test Math.min"); 30. Assert.assertEquals(2.0, Math.min(2.0, 4.0), 0.0); 31. } 32. 33. // ÆÚÍû´Ë·½·¨Å׳öNullPointerExceptionÒì³£ 34. @Test(expected = NullPointerException.class) 35. public void testException() { 36. System.out.println("Test exception"); 37. Object obj = null; 38. obj.toString(); 39. } 40. 41. // ºöÂԴ˲âÊÔ·½·¨ 42. @Ignore 43. @Test 44. public void testMathMax() { 45. Assert.fail("ûÓÐʵÏÖ"); 46. } 47. // ʹÓá°¼ÙÉ衱À´ºöÂÔ²âÊÔ·½·¨ 48. @Test 49. public void testAssume(){ 50. System.out.println("Test assume"); 51. // µ±¼ÙÉèʧ°Üʱ£¬Ôò»áÍ£Ö¹ÔËÐУ¬µ«Õâ²¢²»»áÒâζ²âÊÔ·½·¨Ê§°Ü¡£ 52. Assume.assumeTrue(false); 53. Assert.fail("ûÓÐʵÏÖ"); 54. } 55. 56. @After 57. public void tearDown() throws Exception { 58. System.out.println("Tear down"); 59. } 60. 61. @AfterClass 62. public static void tearDownAfterClass() { 63. System.out.println("Tear down After class"); 64. } 65. 66.}
|
Èç¹ûϸÐĵϰ£¬»á·¢ÏÖJunit3µÄpackageÊÇjunit.framework£¬¶øJunit4ÊÇorg.junit¡£
Ö´ÐдËÓÃÀýºó£¬¿ØÖÆÌ¨»áÊä³ö
дµÀ
Set up before class Set up Test Math.pow Tear down Set up Test Math.min Tear down Set up Test exception Tear down Set up Test assume Tear down Tear down After class |
¿ÉÒÔ¿´µ½£¬Ö´ÐдÎÐòÊÇ@BeforeClass -> @Before -> @Test ->
@After -> @Before -> @Test -> @After ->
@AfterClass¡£@Ignore»á±»ºöÂÔ¡£
ÔËÐвâÊÔ·½·¨
ÓëJunit3ÀàËÆ£¬¿ÉÒÔÔÚEclipseÖÐÔËÐУ¬Ò²¿ÉÒÔͨ¹ýmvn testÃüÁîÔËÐС£
Assert
Junit3ºÍJunit4¶¼ÌṩÁËÒ»¸öAssertÀࣨËäÈ»package²»Í¬£¬µ«ÊÇ´óÖ²¶à£©¡£AssertÀàÖж¨ÒåÁ˺ܶྲ̬·½·¨À´½øÐжÏÑÔ¡£ÁбíÈçÏ£º
?assertTrue(String message, boolean condition) ÒªÇócondition == true ?assertFalse(String message, boolean condition) ÒªÇócondition == false ?fail(String message) ±ØÈ»Ê§°Ü£¬Í¬ÑùÒªÇó´úÂë²»¿É´ï ?assertEquals(String message, XXX expected,XXX actual) ÒªÇóexpected.equals(actual) ?assertArrayEquals(String message, XXX[] expecteds,XXX [] actuals) ÒªÇóexpected.equalsArray(actual) ?assertNotNull(String message, Object object) ÒªÇóobject!=null ?assertNull(String message, Object object) ÒªÇóobject==null ?assertSame(String message, Object expected, Object actual) ÒªÇóexpected == actual ?assertNotSame(String message, Object unexpected,Object actual) ÒªÇóexpected != actual ?assertThat(String reason, T actual, Matcher matcher) ÒªÇómatcher.matches(actual) == true
|
Mock/Stub
MockºÍStubÊÇÁ½ÖÖ²âÊÔ´úÂ빦Äܵķ½·¨¡£Mock²âÖØÓÚ¶Ô¹¦ÄܵÄÄ£Äâ¡£Stub²âÖØÓÚ¶Ô¹¦ÄܵIJâÊÔÖØÏÖ¡£±ÈÈç¶ÔÓÚList½Ó¿Ú£¬Mock»áÖ±½Ó¶ÔList½øÐÐÄ£Ä⣬¶øStub»áн¨Ò»¸öʵÏÖÁËListµÄTestList£¬ÔÚÆäÖбàд²âÊԵĴúÂë¡£
Ç¿ÁÒ½¨ÒéÓÅÏÈÑ¡ÔñMock·½Ê½£¬ÒòΪMock·½Ê½Ï£¬Ä£Äâ´úÂëÓë²âÊÔ´úÂë·ÅÔÚÒ»Æð£¬Ò×¶ÁÐԺ㬶øÇÒÀ©Õ¹ÐÔ¡¢Áé»îÐÔ¶¼±ÈStubºÃ¡£
±È½ÏÁ÷ÐеÄMockÓУº
JMock
EasyMock
Mockito
powermock
ÆäÖÐEasyMockºÍMockito¶ÔÓÚJava½Ó¿ÚʹÓýӿڴúÀíµÄ·½Ê½À´Ä£Ä⣬¶ÔÓÚJavaÀàʹÓü̳еķ½Ê½À´Ä£Ä⣨Ҳ¼´»á´´½¨Ò»¸öеÄClassÀࣩ¡£MockitoÖ§³Öspy·½Ê½£¬¿ÉÒÔ¶ÔʵÀý½øÐÐÄ£Äâ¡£µ«ËüÃǶ¼²»ÄܶԾ²Ì¬·½·¨ºÍfinalÀà½øÐÐÄ£Ä⣬powermockͨ¹ýÐÞ¸Ä×Ö½ÚÂëÀ´Ö§³ÖÁ˴˹¦ÄÜ¡£
EasyMock
IBMÉÏÓм¸Æª½éÉÜEasyMockʹÓ÷½·¨ºÍÔÀíµÄÎÄÕ£ºEasyMock
ʹÓ÷½·¨ÓëÔÀíÆÊÎö£¬Ê¹Óà EasyMock ¸üÇáËɵؽøÐвâÊÔ¡£
EasyMock°Ñ²âÊÔ¹ý³Ì·ÖΪÈý²½£ºÂ¼ÖÆ¡¢ÔËÐвâÊÔ´úÂë¡¢ÑéÖ¤ÆÚÍû¡£
Â¼ÖÆ¹ý³Ì´ó¸Å¾ÍÊÇ£ºÆÚÍûmethod(params)Ö´ÐÐtimes´Î£¨Ä¬ÈÏÒ»´Î£©£¬·µ»Øresult£¨¿ÉÑ¡£©£¬Å׳öexceptionÒì³££¨¿ÉÑ¡£©¡£
ÑéÖ¤ÆÚÍû¹ý³Ì½«»á¼ì²é·½·¨µÄµ÷ÓôÎÊý¡£
Ò»¸ö¼òµ¥µÄÑùÀýÊÇ£º
@Test 2.public void testListInEasyMock() { 3. List list = EasyMock.createMock(List.class); 4. // Â¼ÖÆ¹ý³Ì 5. 6. // ÆÚÍû·½·¨list.set(0,1)Ö´ÐÐ2´Î£¬·µ»Ønull£¬²»Å׳öÒì³£ 7. expect1: EasyMock.expect(list.set(0, 1)).andReturn(null).times(2); 8. // ÆÚÍû·½·¨list.set(0,1)Ö´ÐÐ1´Î£¬·µ»Ønull£¬²»Å׳öÒì³£ 9. expect2: EasyMock.expect(list.set(0, 1)).andReturn(1); 10. 11. // Ö´ÐвâÊÔ´úÂë 12. EasyMock.replay(list); 13. // Ö´ÐÐlist.set(0,1)£¬Æ¥Åäexpect1ÆÚÍû£¬»á·µ»Ønull 14. Assert.assertNull(list.set(0, 1)); 15. // Ö´ÐÐlist.set(0,1)£¬Æ¥Åäexpect1£¨ÒòΪexpect1ÆÚÍûÖ´Ðд˷½·¨2´Î£©£¬»á·µ»Ønull 16. Assert.assertNull(list.set(0, 1)); 17. // Ö´ÐÐlist.set(0,1)£¬Æ¥Åäexpect2£¬»á·µ»Ø1 18. Assert.assertEquals(1, list.set(0, 1)); 19. 20. // ÑéÖ¤ÆÚÍû 21. EasyMock.verify(list); 22.}
|
EasyMock»¹Ö§³ÖÑϸñµÄ¼ì²é£¬ÒªÇóÖ´Ðеķ½·¨´ÎÐòÓëÆÚÍûµÄÍêȫһÖ¡£
Mockito
MockitoÊÇGoogle CodeÉϵÄÒ»¸ö¿ªÔ´ÏîÄ¿£¬ApiÏà¶ÔÓÚEasyMock¸üºÃÓѺá£ÓëEasyMock²»Í¬µÄÊÇ£¬MockitoûÓÐÂ¼ÖÆ¹ý³Ì£¬Ö»ÐèÒªÔÚ¡°ÔËÐвâÊÔ´úÂ롱֮ǰ¶Ô½Ó¿Ú½øÐÐStub£¬Ò²¼´ÉèÖ÷½·¨µÄ·µ»ØÖµ»òÅ׳öµÄÒì³££¬È»ºóÖ±½ÓÔËÐвâÊÔ´úÂ룬ÔËÐÐÆÚ¼äµ÷ÓÃMockµÄ·½·¨£¬»á·µ»ØÔ¤ÏÈÉèÖõķµ»ØÖµ»òÅ׳öÒì³££¬×îºóÔÙ¶Ô²âÊÔ´úÂë½øÐÐÑéÖ¤¡£¿ÉÒԲ鿴´ËÎÄÕÂÁ˽âÁ½ÕߵIJ»Í¬¡£
¹Ù·½ÌṩÁ˺ܶàÑùÀý£¬»ù±¾ÉϰüÀ¨ÁËËùÓй¦ÄÜ£¬¿ÉÒÔÈ¥¿´¿´¡£
ÕâÀï´Ó¹Ù·½ÑùÀýÖÐժ¼¼¸¸öµäÐ͵ģº
ÑéÖ¤µ÷ÓÃÐÐΪ
import static org.mockito.Mockito.*; 2. 3.//´´½¨Mock 4.List mockedList = mock(List.class); 5. 6.//ʹÓÃMock¶ÔÏó 7.mockedList.add("one"); 8.mockedList.clear(); 9. 10.//ÑéÖ¤ÐÐΪ 11.verify(mockedList).add("one"); 12.verify(mockedList).clear();
|
¶ÔMock¶ÔÏó½øÐÐStub
//Ò²¿ÉÒÔMock¾ßÌåµÄÀ࣬¶ø²»½ö½öÊÇ½Ó¿Ú 2.LinkedList mockedList = mock(LinkedList.class); 3. 4.//Stub 5.when(mockedList.get(0)).thenReturn("first"); // ÉèÖ÷µ»ØÖµ 6.when(mockedList.get(1)).thenThrow(new RuntimeException()); // Å׳öÒì³£ 7. 8.//µÚÒ»¸ö»á´òÓ¡ "first" 9.System.out.println(mockedList.get(0)); 10. 11.//½ÓÏÂÀ´»áÅ׳öruntimeÒì³£ 12.System.out.println(mockedList.get(1)); 13. 14.//½ÓÏÂÀ´»á´òÓ¡"null",ÕâÊÇÒòΪûÓÐstub get(999) 15.System.out.println(mockedList.get(999)); 16. 17.// ¿ÉÒÔÑ¡ÔñÐÔµØÑéÖ¤ÐÐΪ£¬±ÈÈçÖ»¹ØÐÄÊÇ·ñµ÷Óùýget(0)£¬¶ø²»¹ØÐÄÊÇ·ñµ÷Óùýget(1) 18.verify(mockedList).get(0);
|
´úÂ븲¸ÇÂÊ
±È½ÏÁ÷ÐеŤ¾ßÊÇEmmaºÍJacoco,Ecliplse²å¼þÓÐeclemma¡£eclemma2.0֮ǰ²ÉÓõÄÊÇEmma£¬Ö®ºó²ÉÓõÄÊÇJacoco¡£ÕâÀïÖ÷Òª½éÉÜÒ»ÏÂJacoco¡£EclmamaÓÉÓÚÊÇEclipse²å¼þ£¬ËùÒԷdz£Ò×Ó㬾Ͳ»¶à×ö½éÉÜÁË¡£
Jacoco
Jacoco¿ÉÒÔǶÈëµ½Ant¡¢MavenÖУ¬Ò²¿ÉÒÔʹÓÃJava Agent¼¼Êõ¼à¿ØÈÎÒâJava³ÌÐò£¬Ò²¿ÉÒÔʹÓÃJava
ApiÀ´¶¨Öƹ¦ÄÜ¡£
Jacoco»á¼à¿ØJVMÖеĵ÷Óã¬Éú³É¼à¿Ø½á¹û£¨Ä¬Èϱ£´æÔÚjacoco.execÎļþÖУ©£¬È»ºó·ÖÎö´Ë½á¹û£¬ÅäºÏÔ´´úÂëÉú³É¸²¸ÇÂʱ¨¸æ¡£ÐèҪעÒâµÄÊÇ£º¼à¿ØºÍ·ÖÎöÕâÁ½²½£¬±ØÐëʹÓÃÏàͬµÄClassÎļþ£¬·ñÔòÓÉÓÚClass²»Í¬£¬¶øÎÞ·¨¶¨Î»µ½¾ßÌåµÄ·½·¨£¬µ¼Ö¸²¸ÇÂʾùΪ0%¡£
Java AgentǶÈë
Ê×ÏÈ£¬ÐèÒªÏÂÔØjacocoagent.jarÎļþ£¬È»ºóÔÚJava³ÌÐòÆô¶¯²ÎÊýºóÃæ¼ÓÉÏ -javaagent:[yourpath/]jacocoagent.jar=[option1]=[value1],[option2]=[value2]£¬¾ßÌåµÄoptions¿ÉÒÔÔÚ´ËÒ³ÃæÕÒµ½¡£Ä¬ÈÏ»áÔÚJVM¹Ø±Õʱ£¨×¢Òâ²»ÄÜÊÇkill
-9£©£¬Êä³ö¼à¿Ø½á¹ûµ½jacoco.execÎļþÖУ¬Ò²¿ÉÒÔͨ¹ýsocketÀ´ÊµÊ±µØÊä³ö¼à¿Ø±¨¸æ£¨¿ÉÒÔÔÚExample´úÂëÖÐÕÒµ½¼òµ¥ÊµÏÖ£©¡£
Java Report
¿ÉÒÔʹÓÃAnt¡¢Mvn»òEclipseÀ´·ÖÎöjacoco.execÎļþ£¬Ò²¿ÉÒÔͨ¹ýAPIÀ´·ÖÎö¡£
public void createReport() throws Exception { 2. // ¶ÁÈ¡¼à¿Ø½á¹û 3. final FileInputStream fis = new FileInputStream(new File("jacoco.exec")); 4. final ExecutionDataReader executionDataReader = new ExecutionDataReader(fis); 5. // Ö´ÐÐÊý¾ÝÐÅÏ¢ 6. ExecutionDataStore executionDataStore = new ExecutionDataStore(); 7. // »á»°ÐÅÏ¢ 8. SessionInfoStore sessionInfoStore = new SessionInfoStore(); 9. 10. executionDataReader.setExecutionDataVisitor(executionDataStore); 11. executionDataReader.setSessionInfoVisitor(sessionInfoStore); 12. 13. while (executionDataReader.read()) { 14. } 15. 16. fis.close(); 17. 18. // ·ÖÎö½á¹¹ 19. final CoverageBuilder coverageBuilder = new CoverageBuilder(); 20. final Analyzer analyzer = new Analyzer(executionDataStore, coverageBuilder); 21. 22. // ´«Èë¼à¿ØÊ±µÄClassÎļþĿ¼£¬×¢Òâ±ØÐëÓë¼à¿ØÊ±µÄÒ»Ñù 23. File classesDirectory = new File("classes"); 24. analyzer.analyzeAll(classesDirectory); 25. 26. IBundleCoverage bundleCoverage = coverageBuilder.getBundle("Title"); 27. // Êä³ö±¨¸æ 28. File reportDirectory = new File("report"); // ±¨¸æËùÔÚµÄĿ¼ 29. final HTMLFormatter htmlFormatter = new HTMLFormatter(); // HTML¸ñʽ 30. final IReportVisitor visitor = htmlFormatter.createVisitor(new FileMultiReportOutput(reportDirectory)); 31. // ±ØÐëÏȵ÷ÓÃvisitInfo 32. visitor.visitInfo(sessionInfoStore.getInfos(), executionDataStore.getContents()); 33. File sourceDirectory = new File("src"); // Ô´´úÂëĿ¼ 34. // ±éÀúËùÓеÄÔ´´úÂë 35. // Èç¹û²»Ö´Ðд˹ý³Ì£¬ÔòÔÚ±¨¸æÖÐÖ»ÄÜ¿´µ½·½·¨Ãû£¬µ«ÊÇÎÞ·¨²é¿´¾ßÌåµÄ¸²¸Ç£¨ÒòΪûÓÐÔ´´úÂëÒ³Ãæ£© 36. visitor.visitBundle(bundleCoverage, new DirectorySourceFileLocator(sourceDirectory, "utf-8", 4)); 37. // Ö´ÐÐÍê±Ï 38. visitor.visitEnd(); 39.}
|
|