Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
¿ªÔ´µ¥Ôª²âÊÔ¹¤¾ß»ã×Ü
 
  4843  次浏览      30
 2019-3-11
 
±à¼­ÍƼö:

±¾ÎÄÀ´×ÔÓÚcsdn£¬±¾ÎÄÖ÷Òª½éÉÜÁ˵¥Ôª²âÊÔµÄ30¿îÏà¹Ø²âÊÔ¹¤¾ßºÍ¿ò¼ÜµÄ½éÉܺÍÖ§³ÖµÄÓïÑÔµÈÏà¹ØÄÚÈÝ¡£

×÷Ϊ¿ªÔ´Èí¼þµÄ°®ºÃÕߣ¬Á˽âÁ˵¥Ôª²âÊÔÕâ¸ÅÄîºó£¬×ÔÈ»È̲»×¡È¥ÕÒÕÒÓÐʲô¿ªÔ´µ¥Ôª²âÊÔ¹¤¾ß¡£

ÏÂÃæÁгöÁË30¿î1£¬²»·ÖÏȺó˳Ðò¡£

1. NoSQLµÄµ¥Ôª²âÊÔ¹¤¾ß NoSQLUnit

ÊÚȨЭÒé:Apache

¿ª·¢ÓïÑÔ:Java

²Ù×÷ϵͳ:¿çƽ̨

NoSQLUnit Ïêϸ½éÉÜ

NoSQLUnit ÊÇÒ»¸ö JUnit µÄÀ©Õ¹£¬ÓÃÀ´ÎªÄÇЩʹÓÃÁË NoSQL ºó¶ËµÄÓ¦ÓÃÌṩµ¥Ôª²âÊԺͼ¯³É²âÊԵŤ¾ß¡£

ʹÓÃʾÀý£º

@UsingDataSet(locations="my_data_set.json", loadStrategy=LoadStrategyEnum.REFRESH)
@ShouldMatchDataSet(location=
"my_expected_data_set.json")

lordofthejars / nosql-unit

2. JavaScriptµ¥Ôª²âÊÔ¹¤¾ß JsTestDriver

ÊÚȨЭÒé:Apache

¿ª·¢ÓïÑÔ:JavaScript

²Ù×÷ϵͳ:¿çƽ̨

sTestDriver Ïêϸ½éÉÜ

JsTestDriverÊÇÒ»¸öJavaScriptµ¥Ôª²âÊÔ¹¤¾ß£¬Ò×ÓÚÓë³ÖÐø¹¹½¨ÏµÍ³Ï༯³É²¢Äܹ»ÔÚ¶à¸öä¯ÀÀÆ÷ÉÏÔËÐвâÊÔÇáËÉʵÏÖTDD·ç¸ñµÄ¿ª·¢¡£µ±ÔÚÏîÄ¿ÖÐÅäÖúÃjs-test-driverÒÔºó£¬Èçͬjunit²âÊÔjavaÎļþÒ»°ã£¬js-test-driver¿ÉÒÔÖ±½Óͨ¹ýÖ±½ÓÔËÐÐjsÎļþ£¬À´¶ÔjsÎļþµ¥Ôª²âÊÔ¡£

3. C++µ¥Ôª²âÊÔ¹¤¾ß QTRunner

ÊÚȨЭÒé:GPLv3

¿ª·¢ÓïÑÔ:C/C++

²Ù×÷ϵͳ:¿çƽ̨

QTRunner Ïêϸ½éÉÜ

QTRunner ÊÇÒ»¸öÓÃÀ´ÔËÐжà¸öµ¥Ôª²âÊÔ²¢ÔÚÒ»¸öGUIͼÐνçÃæµÄÓ¦ÓóÌÐòÖÐÏÔʾ²âÊÔ½á¹ûµÄÈí¼þ¡£Ö§³Ö QTestLib ºÍ GoogleTest µ¥Ôª²âÊÔµÄÖ´ÐУ¬QTRunner ÊÇ»ùÓÚ Qt ¿â¿ª·¢µÄ¿çƽ̨²âÊÔ¹¤¾ß¡£

4. JavaScript µ¥Ôª²âÊÔ¹¤¾ß Venus

ÊÚȨЭÒé:Apache 2.0

¿ª·¢ÓïÑÔ:JavaScript

²Ù×÷ϵͳ:¿çƽ̨

¿ª·¢³§ÉÌ:Linkedin

Venus Ïêϸ½éÉÜ

Venus ÊÇÒ»¸ö JavaScript (JS)µÄ²âÊÔ¹¤¾ß£¬¿ÉÒÔ¼ò»¯ÔËÐе¥Ôª²âÊÔ¡£µ±ÄãÔÚ JS ¿ª·¢Ò»¸ö»ùÓÚä¯ÀÀÆ÷µÄÏîĿʱ£¬ÄãÏë´´½¨µ¥Ôª²âÊÔ²¢Æµ·±µØÔËÐÐËüÃÇ¡£Í¨³££¬Äã»áÓÃһЩ¿â±ÈÈç Mocha »ò Jasmine£¬Ð´Ò»¸öµ¥Ôª²âÊÔ£¬ÕâЩ¿â¿ÉÒÔÈÃÄ㶨Òå²âÊÔÓÃÀý£¬²¢Ìṩ API À´±àдÅжϡ£

ÎÒÃÇͨ¹ý´´½¨Ò»¸ö¹¤¾ß£¬¿ÉÒÔÈÃÄã¸üÇáËɵØÓëÏÖÓеĿâÒ»Æð¹¤×÷¡£Ò»ÏÂÊÇ Venus µÄÖ÷ÒªºÃ´¦£º

ÔÚÄãµÄ²âÊÔʹÓà Simple annotations£¬ À´Ö¸¶¨ÄãҪʹÓõIJâÊԿ⣬ÄãÒª²âÊÔµÄÎļþ£¬ÆäËüÎļþÒÀÀµ£¬ÒÔ¼°²âÊÔ¹¤¾ßÄ£°å

ͨ¹ýʹÓà PhantomJS ÔËÐÐÃüÁîÐУ¬Ö±½Ó¿ìËÙÔËÐÐÄãµÄ»ùÓÚä¯ÀÀÆ÷µÄ²âÊÔ

ÔÚ¶àä¯ÀÀÆ÷µÄÃüÁîÐÐÖÐͬʱÔËÐÐÄãµÄ²âÊÔ£¨±¾µØÔËÐлòÔ¶³Ì£©

¼¯³É³ÖÐø¼¯³É¹¤¾ß£¨Selenium Grid + Travis CI£©

linkedin / venus.js

5.Flex µ¥Ôª²âÊÔ¹¤¾ß Fluint

ÊÚȨЭÒé:MIT

¿ª·¢ÓïÑÔ:ActionScript

²Ù×÷ϵͳ:¿çƽ̨

Fluint Ïêϸ½éÉÜ

FluintÊÇÒ»¸ö Flex µ¥Ôª²âÊÔ¹¤¾ß£¬¶ÔÓÚFlexµ¥ÔªºÍ¼¯³É²âÊÔ£¬¡°Fluint¡±·Ç³£¼ò½à¡£ËüÊÇΪ±àдFlex2»òFlex3Ó¦ÓõĿª·¢ÕßÌṩµÄ²âÊÔ¿ò¼Ü£¬ÎÞÂÛÕâЩӦÓÃÊÇͨ¹ýAdobe Flash PlayerÔÚä¯ÀÀÆ÷Öв¿ÊðµÄ£¬»¹ÊÇͨ¹ýAdobe AIRÔÚ×ÀÃæÉϲ¿ÊðµÄ¡£

Fluint×î³õÊÇ×÷ΪDigital PrimatesµÄÄÚ²¿¹¤¾ß¿ª·¢µÄ£¬ÓÃÒÔ²âÊÔһЩ·Ç³£´óµÄÏîÄ¿¡£Ëæ×ÅFlexÉçÇø¶ÔÆäÐèÇóµÄ²»¶ÏÔö³¤£¬Digital Primates¾ö¶¨°ÑÆä·¢²¼ÎªÒ»¸ö¿ªÔ´ÏîÄ¿¡£¾¡¹ÜÕë¶ÔFlexÓÐÆäËûµÄµ¥Ôª²âÊÔ½â¾ö·½°¸£¬°´ÕÕLabrialaµÄ˵·¨£¬FluintÈÔÌî²¹ÁËÖØÒª¿Õ°×¡£

6. JavaScript µ¥Ôª²âÊÔ¹¤¾ß Buster.JS

ÊÚȨЭÒé:BSD

¿ª·¢ÓïÑÔ:JavaScript ²é¿´Ô´Âë

²Ù×÷ϵͳ:¿çƽ̨

Buster.JS Ïêϸ½éÉÜ

Buster.JS ÊÇ JavaScript µÄµ¥Ôª²âÊÔ¹¤¾ß°ü£¬**

**ä¯ÀÀÆ÷²âÊÔ¹¤¾ß°ü£»**Buster.js ¿ÉÒÔ×Ô¶¯µÄÔÚä¯ÀÀÆ÷ÉϲâÊÔ£¬Ïñ JsTestDriver £»QUnit ·ç¸ñ ¾²Ì¬ HTML Ò³Ãæ²âÊÔ £» ÔÚһЩ²»ÖªÃûµÄä¯ÀÀÆ÷ÉϲâÊÔ£¬Ïñ PhantomJS ºÍ jsdom £»

Node.js ²âÊÔ¹¤¾ß°ü£»

Áé»î£» Buster.js ÀïÃæ¼¸ºõº¬ÓÐËùÓеĹ«¹² API ¡£Äã¿É×Ô¼ºÊéд* ²âÊÔ±¨¸æ* À´×Ô¶¨Òå buster µÄÊä³ö£¨buster ÀïÃæÒѾ­ÓÐ xUnit XML, traditional dots, specification, tap, TeamCity £©£¬Ò²¿ÉÒÔ±àдÀ©Õ¹ÆäËû²âÊÔ¿ò¼Ü£¨buster ÀïÃæÒѾ­ÓÐ buster-jstestdriver £©£¬Ìí¼ÓÄã×Ô¼ºµÄ²âÊÔÓï·¨£¨xUnit ºÍ BDD£©£»

¸ü¶àÏà¹ØÐÅÏ¢Çë¿´ the overview ¡£

7. ´æ´¢¹ý³Ìµ¥Ôª²âÊÔ¹¤¾ß SQLUnit

ÊÚȨЭÒé:δ֪

¿ª·¢ÓïÑÔ:Java

²Ù×÷ϵͳ:¿çƽ̨

SQLUnit Ïêϸ½éÉÜ

SQLUnitÊÇÒ»¸öÓÃÓÚ¶Ô´æ´¢¹ý³Ì½øÐе¥Ôª²âÊԵŤ¾ß£¬ÆäʵҲ¿ÉÒÔÓÃÓÚ×öÕë¶ÔÊý¾Ý¿âÊý¾Ý¡¢ÐÔÄܵIJâÊԵȣ¬ÑÓÐøÁËxUnit¼Ò×åµÄÒ»¹áÌØÐԺͷç¸ñ£¬Ö»²»¹ýËüµÄ²âÊÔÊÇÒÔxmlµÄ·½Ê½À´±àд£¬µ«Ô­ÔòÈÔÈ»ºÍxUnit¼Ò×åÆäËû²úÆ·Ò»Ñù£¬Ç¿µ÷µÄÊÇÊä³öºÍÔ¤ÆÚµÄ±È½Ï£¬SQLUnitµÄÎĵµ±È½ÏµÄÉÙ£¬ÓÉÓÚ¹Ù·½Õ¾Éϲ¢Ã»ÓÐÌṩÀàËÆÆäËû¿ªÔ´¹¤¾ßµÄquick start guide£¬¾ÍдÁËÕâÆªquick start guideÒÔ±ã´ó¼Ò¿ìËÙµÄʹÓÃsqlunit£¬ÖÁÓÚSQLUnitµÄ¸ß¼¶Ó÷¨»¹ÊǵÃÈ¥¶à¿´¿´sqlunit.sf.net¹Ù·½Õ¾ÉϵÄÎĵµ¡£

8.C++µ¥Ôª²âÊÔ¹¤¾ß ECUT

ÊÚȨЭÒé:EPL

¿ª·¢ÓïÑÔ:C/C++

²Ù×÷ϵͳ:¿çƽ̨

ECUT Ïêϸ½éÉÜ

ECUT (Eclipse C++ Unit Testing) ÏîÄ¿½« CppUnit ºÍ Eclipse CDT ¿ª·¢¹¤¾ß¼¯³ÉÆðÀ´£¬Ìṩ¸üºÃµÄÎÞ·ìµÄµ¥Ôª²âÊÔÖ§³Ö£¬ÀàËÆ JUnit ºÍ JDT Ò»Ñù¡£¸ÃÏîĿҲÔÊÐí¸úÆäËûµÄ C++µ¥Ôª²âÊÔ¿ò¼Ü½øÐм¯³É¡£

9.Qtµ¥Ôª²âÊÔ¹¤¾ß QTestlib

ÊÚȨЭÒé:δ֪

¿ª·¢ÓïÑÔ:C/C++

²Ù×÷ϵͳ:¿çƽ̨

QTestlib Ïêϸ½éÉÜ

Trolltech¹«Ë¾ÌṩµÄQTestlib¿ò¼Ü£¬ÊÇÒ»ÖÖÕë¶Ô»ùÓÚQT±àдµÄ³ÌÐò»ò¿âµÄµ¥Ôª²âÊÔ¹¤¾ß¡£QTestLibÌṩÁ˵¥Ôª²âÊÔ¿ò¼ÜµÄ»ù±¾¹¦ÄÜ£¬²¢ÌṩÁËÕë¶ÔGUI²âÊÔµÄÀ©Õ¹¹¦ÄÜ¡£Éè¼ÆQTestLibµÄÄ¿±êÊÇΪÁ˼ò»¯QT³ÌÐò»ò¿âµÄµ¥Ôª²âÊÔ¹¤×÷¡£

10.µ¥Ôª²âÊÔά»¤¹¤¾ß Unitils

ÊÚȨЭÒé:Apache

¿ª·¢ÓïÑÔ:Java

²Ù×÷ϵͳ:¿çƽ̨

Unitils Ïêϸ½éÉÜ

UnitilsÕâ¸öJava¿ªÔ´Àà°üµÄÄ¿µÄÊÇÈõ¥Ôª²âÊÔ±äµÃ¸ü¼ÓÈÝÒ׺ͿÉά»¤¡£Unitils¹¹½¨ÔÚDBUnitÓëEasyMockÏîĿ֮Éϲ¢Óë JUnitºÍTestNGÏà½áºÏ¡£Ö§³ÖÊý¾Ý¿â²âÊÔ£¬Ö§³ÖÀûÓÃmock¶ÔÏó½øÐвâÊÔ²¢ÌṩÓëSpringºÍHibernateÏ༯³É¡£UnitilsÉè¼Æ³É ÒÔÒ»Öָ߶ȿÉÅäÖúÍËÉɢżºÏµÄ·½Ê½À´Ìí¼ÓÕâЩ·þÎñµ½µ¥Ôª²âÊÔÖС£

ÔÚ½øÐÐÊý¾Ý¿â²âÊÔʱÄܹ»£º

×Ô¶¯Î¬»¤ºÍÇ¿ÖÆ¹Ø±Õµ¥Ôª²âÊÔÊý¾Ý¿â£¨Ö§³ÖOracle£¬Hsqldb£¬MySql£¬DB2£©£¬

¼ò»¯µ¥Ôª²âÊÔÊý¾Ý¿âÁ¬½ÓµÄÉèÖã¬

¼ò»¯ÀûÓÃDBUnit²âÊÔÊý¾ÝµÄ²åÈ룬

¼ò»¯Hibernate session¹ÜÀí£¬

×Ô¶¯²âÊÔÓëÊý¾Ý¿âÏàÓ³ÉäµÄHibernateÓ³Éä¶ÔÏó¡£

ÔÚÀûÓÃMock¶ÔÏó½øÐвâÊÔʱÄܹ»£º

¼ò»¯EasyMock mock¶ÔÏó´´½¨£¬

¼ò»¯mock¶ÔÏó×¢È룬ÀûÓ÷´ÉäµÈʽƥÅäEasyMock²ÎÊý¡£

ÔÚÓëSpring¼¯³ÉʱÒ×ÓÚ°Ñspring¹ÜÀíµÄbean×¢Èëµ½µ¥Ôª²âÊÔÖУ¬Ö§³ÖÔÚµ¥Ôª²âÊÔÖÐʹÓÃÒ»¸öÓÃSpringÅäÖõÄHibernate SessionFactory¡£

11. Javaµ¥Ôª²âÊÔ¿ò¼Ü JUnit

ÊÚȨЭÒé:CPL

¿ª·¢ÓïÑÔ:Java

²Ù×÷ϵͳ:¿çƽ̨

JUnit Ïêϸ½éÉÜ

JUnitÊÇÒ»¸öJavaÓïÑԵĵ¥Ôª²âÊÔ¿ò¼Ü¡£ËüÓÉKent BeckºÍErich Gamma½¨Á¢£¬Öð½¥³ÉΪԴÓÚKent BeckµÄsUnitµÄxUnit¼Ò×åÖÐΪ×î³É¹¦µÄÒ»¸ö¡£ JUnitÓÐËü×Ô¼ºµÄJUnitÀ©Õ¹Éú̬Ȧ¡£

¶àÊýJavaµÄ¿ª·¢»·¾³¶¼ÒѾ­¼¯³ÉÁËJUnit×÷Ϊµ¥Ôª²âÊԵŤ¾ß¡£

ÔÚÏßJavadoc£ºhttp://www.ostools.net/apidocs/apidoc?api=junit-4.10

12.Cµ¥Ôª²âÊÔ¹¤¾ß greatest

ÊÚȨЭÒé:δ֪

¿ª·¢ÓïÑÔ:C/C++

²Ù×÷ϵͳ:¿çƽ̨

greatest Ïêϸ½éÉÜ

greatest ÊÇÒ»¸ö C ÓïÑԵĵ¥Ôª²âÊÔϵͳ£¬Ö»ÐèÒªÒ»¸öÎļþÖ§³Ö¡£Ê¾Àý´úÂ룺

$ cat simple.c
#include "greatest.h"
TEST x_should_equal_1() {
int x = 1;
ASSERT_EQ(1, x); /* default message */
ASSERT_EQm("yikes, x doesn't equal 1", 1, x); /* custom message */
PASS();
}
SUITE(the_suite) {
RUN_TEST(x_should_equal_1);
}
/* Add definitions that need to be in the test runner's main file. */
GREATEST_MAIN_DEFS();
int main(int argc, char **argv) {
GREATEST_MAIN_BEGIN(); /* command-line arguments, initialization. */
RUN_SUITE(the_suite);
GREATEST_MAIN_END(); /* display results */
}
$ make simple && ./simple
cc -g -Wall -Werror -pedantic simple.c -o simple
* Suite the_suite:
.
1 tests - 1 pass, 0 fail, 0 skipped (5 ticks, 0.000 sec)
Total: 1 tests (47 ticks, 0.000 sec)
Pass: 1, fail: 0, skip: 0.

silentbicycle / greatest

13.µ¥Ôª²âÊÔ¼ì²â¹¤¾ß PIT

µ¥Ôª²âÊÔ¹¤¾ß

ÊÚȨЭÒé:Apache

¿ª·¢ÓïÑÔ:Java

²Ù×÷ϵͳ:¿çƽ̨

PIT Ïêϸ½éÉÜ

PIT ÊÇÒ»¸ö¿ìËÙµÄ Java ϵͳͻ±ä¼ì²âϵͳ£¬¿ÉÓÃÀ´²âÊÔµ¥Ôª²âÊÔµÄÓÐЧÐÔ£¬²âÊÔµ¥Ôª²âÊԵĸ²¸Ç¡£

14.Êý¾Ý¿âµ¥Ôª²âÊÔ¹¤¾ß DbUnit

ÊÚȨЭÒé:δ֪

¿ª·¢ÓïÑÔ:Java

²Ù×÷ϵͳ:¿çƽ̨

DbUnit Ïêϸ½éÉÜ

DbUnit ʹÄú¿ÉÒÔÈÝÒ×µØÖ´ÐÐ JDBC ²éѯ²¢»ñÈ¡ËüÃǵÄÖµ¡£Ê¹Óà DbUnit JDBC °ü×°Æ÷¶ø²»ÊÇ´¿´âµÄ JDBC Óм¸¸öÀíÓÉ£º

¿ÉÒÔÓà SQL ²éѯ´´½¨Ò»¸ö Dataset £¬²¢Ê¹Óà DbUnit µÄ assertion£¨¶ÏÑÔ£©·½·¨£¨ÔÚºóÃæÃèÊö£©¡£

¿ÉÒÔÓà SQL ²éѯ´´½¨Ò»¸ö Dataset £¬²¢½«Ëü±£´æÎªÒ»¸ö FlatXmlDataSet ¡£¿ÉÒÔÔÚÒÔºó½«ËüÖØÐÂ×°ÔØµ½Êý¾Ý¿âÖС£

¿ÉÒÔÈÝÒ׵شÓÈκÎÐÐÖлñÈ¡ÁеÄÄÚÈÝ£¬ÎÞÐè½øÐеü´ú¡£

15.Java GUIµ¥Ôª²âÊÔ¹¤¾ß Abbot

ÊÚȨЭÒé:δ֪

¿ª·¢ÓïÑÔ:Java

²Ù×÷ϵͳ:¿çƽ̨

Abbot Ïêϸ½éÉÜ

Abbot ÊÇÒ»¸ö¼òµ¥µÄÓÃÀ´¶Ô Java µÄͼÐνçÃæÓ¦ÓóÌÐò½øÐй¦Äܺ͵¥Ôª²âÊԵĿò¼Ü¡£Ö÷Òª¹¦ÄܰüÀ¨Ä£ÄâÓû§ÐÐΪ¡¢¼ì²é×é¼þ״̬£¬²âÊÔ¹ý³Ì»á±»¼Ç¼ÏÂÀ´²¢¿ÉÒÔ½øÐлطš£

16.C++µ¥Ôª²âÊÔ¹¤¾ß GoogleTest

ÊÚȨЭÒé:BSD

¿ª·¢ÓïÑÔ:C/C++

²Ù×÷ϵͳ:¿çƽ̨

GoogleTest Ïêϸ½éÉÜ

GoogleµÄ¿ªÔ´C++µ¥Ôª²âÊÔ¿ò¼ÜGoogle Test£¬¼ò³Ægtest ÊÇÒ»¸ö·Ç³£µÄ²»´íµ¥Ôª²âÊÔ¿ò¼Ü¡£Ö§³Ö¿çƽ̨ÒÔ¼°°üÀ¨ Windows CE ºÍ Symbian ÔÚÄÚµÄһЩÊÖ»ú²Ù×÷ϵͳ¡£

17.C++µ¥Ôª²âÊÔ¿ò¼Ü CppTest

ÊÚȨЭÒé:LGPL

¿ª·¢ÓïÑÔ:C/C++

²Ù×÷ϵͳ:¿çƽ̨

CppTest Ïêϸ½éÉÜ

CppTest ÊÇ C++ µÄµ¥Ôª²âÊÔ¿ò¼Ü¡£CppUnit ¼òµ¥µÃ¶à£¬µ«ÊÇЧ¹ûÒ²²»´í¡£ÏÂÃæ¼òÒªµØ¶Ô±ÈÕâÁ½¸öÇ¿´óµÄ¹¤¾ß£º

´´½¨µ¥Ôª²âÊԺͲâÊÔÌ×¼þµÄ¼ò±ãÐÔ¡£CppUnit ºÍ CppTest ¶¼´´½¨Àà·½·¨ÐÎʽµÄµ¥Ôª²âÊÔ£¬Àà±¾Éí¶¼ÅÉÉú×Ô¹¤¾ßÌṩµÄ TestÀà¡£µ«ÊÇ£¬CppTest µÄÓï·¨ÂÔ΢¼òµ¥Ð©£¬²âÊÔµÄ×¢²áÔÚÀ๹ÔìÆ÷ÄÚ½øÐС£¶ÔÓÚ CppUnit£¬ÐèÒª¶îÍâµÄºê CPPUNIT_TEST_SUITE ºÍCPPUNIT_TEST_SUITE_ENDS¡£

ÔËÐвâÊÔ¡£CppTest Ö±½Óµ÷ÓòâÊÔÌ×¼þÉ쵀 run ·½·¨£¬¶ø CppUnit ʹÓõ¥¶ÀµÄ TestRunner À࣬ͨ¹ýµ÷ÓÃÕâ¸öÀàµÄ run ·½·¨ÔËÐвâÊÔ¡£

À©Õ¹²âÊÔ²ã´Î½á¹¹¡£¶ÔÓÚ CppTest£¬ËæÊ±¿ÉÒÔ´ÓÒÔǰµÄ²âÊÔÌ×¼þÅÉÉúÐÂÀ࣬´Ó¶øÀ©Õ¹²âÊÔÌ×¼þ¡£ÐµÄÀඨÒåһЩк¯Êý£¬ÕâЩº¯Êý³ÉΪеĵ¥Ôª²âÊÔ¡£Ö»ÐèÔÚÐÂÀàÀàÐ͵ĶÔÏóÉϵ÷Óà run ·½·¨¡£ÓëÖ®Ïà·´£¬CppUnit ÐèҪʹÓà CPPUNIT_TEST_SUB_SUITEºêºÍÀà¼Ì³ÐÀ´ÊµÏÖÏàͬµÄЧ¹û¡£

Éú³É¸ñʽ»¯µÄÊä³ö¡£CppTest ºÍ CppUnit ¶¼ÔÊÐí¶¨ÖÆÊä³ö¡£µ«ÊÇ£¬CppTest ÓÐÔ¤¶¨ÒåµÄ HTML Êä³ö¸ñʽ»¯Æ÷£¬¶ø CppUnit ûÓС£µ«ÊÇ£¬Ö»ÓÐ CppUnit Ö§³Ö XML ¸ñʽ»¯¡£ËüÃǶ¼Ö§³ÖÎı¾ºÍ±àÒëÆ÷ʽ¸ñʽ¡£

´´½¨²âÊÔ×°±¸¡£ÒªÏëʹÓòâÊÔ×°±¸£¬CppUnit ÒªÇó²âÊÔÀàÅÉÉú×Ô CppUnit::TestFixture¡£Äú±ØÐëÌṩÉèÖúÍÍ˳öÀý³ÌµÄ¶¨Òå¡£¶ÔÓÚ CppTest£¬Ö»ÐèÌṩÉèÖúÍÍ˳öÀý³ÌµÄ¶¨Òå¡£Õâ¸ö½â¾ö·½°¸ÏÔÈ»¸üºÃ£¬ÒòΪÕâÈÿͻ§»ú´úÂë¸ü¼òµ¥¡£

Ô¤¶¨ÒåµÄºêÖ§³Ö¡£CppTest ºÍ CppUnit ¶¼Ìṩһ×éÓÃÓÚ¶ÏÑÔ¡¢´¦Àí¸¡µãµÈµÄºê¡£

Í·Îļþ¡£ CppTest Ö»ÒªÇó°üº¬Ò»¸öÍ·Îļþ£¬¶ø CppUnit ¿Í»§»ú´úÂë±ØÐë¸ù¾ÝʹÓõÄÌØÐÔ°üº¬¶à¸öÍ·Îļþ£¬±ÈÈç HelperMacros.h ºÍ TextTestRunner.h¡£

18. JavaScript/TypeScript ²âÊÔ¿ò¼Ü MoqJS

ÊÚȨЭÒé:δ֪

¿ª·¢ÓïÑÔ:JavaScript

²Ù×÷ϵͳ:¿çƽ̨

MoqJS Ïêϸ½éÉÜ

MoqJS ÊÇ»ùÓÚ .NET Moq ¿ò¼ÜµÄ JavaScript/TypeScript ²âÊÔ¿ò¼Ü¡£

Ö÷ÒªÌØÐÔ£º

Ç¿ÀàÐÍ£ºTypeScript

ÍêÃÀµÄ VS ¼¯³É

ʹÓà setup/setupPrivate/verify/verifyPrivate À´Ð޸ĺͼì²â moles behavior

·Ç³£µÍµÄѧϰÇúÏß

ʾÀý´úÂ룺

// Create some object instance
var dog = new Dog();
// Create a mole for the object
var mole = new Mole(dog);
// Setup behavior
mole.setup(_dog => _dog.eat('meat')).returns('Yum yum yum');
// Invoke
var result = dog.eath('meat');
// Verify the given method was indeed called with the expected value exactly once
var isVerified = mole.verify(_dog => _dog.eat('meat'), Times.exact(1));

slavik57 / moqjs

19. Android ×Ô¶¯»¯²âÊÔ Robolectirc

ÊÚȨЭÒé:MIT

¿ª·¢ÓïÑÔ:Java ²é¿´Ô´Âë

²Ù×÷ϵͳ:Android

Robolectirc Ïêϸ½éÉÜ

Robolectirc ÊÇÒ»¿î Android ³ÌÐò×Ô¶¯»¯²âÊÔ¹¤¾ß¡£

²âÊÔ´úÂ룺

@RunWith(RobolectricTestRunner.class)
public class MyActivityTest {
@Test
public void clickingButton_shouldChangeResultsViewText() throws Exception {
Activity activity = Robolectric.buildActivity(MyActivity.class)
.create().get();
Button pressMeButton = (Button) activity.findViewById(R.id.press_me_button);
TextView results = (TextView) activity.findViewById(R.id.results_text_view);
pressMeButton.performClick();
String resultsText = results.getText().toString();
assertThat(resultsText, equalTo("Testing
Android Rocks!"));
}
}

robolectric / robolectric

20.Python Ä£Äâ²âÊÔ¿ò¼Ü CaptureMock

ÊÚȨЭÒé:LGPL

¿ª·¢ÓïÑÔ:Python

²Ù×÷ϵͳ:¿çƽ̨

CaptureMock Ïêϸ½éÉÜ

CaptureMock Ìṩ Python Ä£ÄâµÄ²¶»ñ-ÖØ·Å¹¦ÄÜ£¬½¨Á¢ÔÚÃüÁîÐкͿͻ§»ú-·þÎñÆ÷ͨÐŵĻù´¡ÉÏ¡£CaptureMock ËùνµÄ·½·¨¾ÍÊÇ ²¶»ñ-ÖØ·Å ·½·¨¡£ËüÔÚÓû§¡®¼Ç¼¡¯Ä£Äâ×ÓϵͳµÄʱºò¹Û²ì´úÂëºÍÄ£Äâ³öÀ´µÄ×ÓϵͳµÄ½»»¥£¬²¢ÇÒÓÃËü×Ô¼ºµÄ¸ñʽ¼Ç¼ÔÚÎı¾ÎļþÖС£

µ±Óû§ÔÚ ¡®ÖØ·Åģʽ¡¯ÔËÐвâÊÔʱ£¬CaptureMock »á°çÑÝ»¹ÔÚÔÍÄðÖеÄ×Óϵͳ£¬Óû§ÉõÖÁ¿ÉÒÔ²»Óð²×°ÕæÕýµÄ×Óϵͳ¡£Óû§Ã¿´ÎÔËÐвâÊÔµÄʱºò¶¼¿ÉÒÔÑ¡ÔñÊÇÔÚÕæÊµ×ÓϵͳµÄÏ»¹ÊÇУÑé»òÕßÖØ½¨²¶»ñµ½µÄÄ£Äâ×Óϵͳ£¬Òà»òÕßÊÇ֮ǰÔËÐв¶»ñµÄÄ£Äâ×Óϵͳ¡£Èç¹ûÔÚ¡®ÖØ·Åģʽ¡¯Ï£¬CaptureMock ²»ÄܽÓÊÕµ½Ö®Ç°ÏàͬµÄµ÷Óã¬ÄÇô²âÊÔ½«»áʧ°Ü£¬ÌáʾÓû§ÊÇ·ñÏëÔڼǼģʽÏÂÖØ½¨Ä£Äâ×Óϵͳ¡£

21.CÓïÑÔµ¥Ôª²âÊÔ¿ò¼Ü CUnit

ÊÚȨЭÒé:LGPL

¿ª·¢ÓïÑÔ:C/C++

²Ù×÷ϵͳ:Windows

CUnit Ïêϸ½éÉÜ

¼ÌJunit CppUnitµÄ³É¹¦ºó£¬ cÓïÑÔ»·¾³ÏÂÒ²³öÏÖÁË¿ª·¢Ô´ÂëµÄ°×ºÐ²âÊÔÓÃÀýCUnit¡£CUnitÒÔ¾²Ì¬¿âµÄÐÎʽÌṩ¸øÓû§Ê¹Óã¬Óû§±àд³ÌÐòµÄʱºòÖ±½ÓÁ´½Ó´Ë¾²Ì¬¿â¾Í¿ÉÒÔÁË¡£ËüÌṩÁËÒ»¸ö¼òµ¥µÄµ¥Ôª²âÊÔ¿ò¼Ü£¬²¢ÇÒΪ³£ÓõÄÊý¾ÝÀàÐÍÌṩÁ˷ḻµÄ¶ÏÑÔÓï¾äÖ§³Ö¡£

22. Pythonµ¥Ôª²âÊÔ¿ò¼Ü PyUnit

ÊÚȨЭÒé:Python

¿ª·¢ÓïÑÔ:Python

²Ù×÷ϵͳ:¿çƽ̨

PyUnit Ïêϸ½éÉÜ

Pythonµ¥Ôª²âÊÔ¿ò¼Ü£¨The Python unit testing framework£©£¬¼ò³ÆÎªPyUnit£¬ ÊÇKent BeckºÍErich GammaÕâÁ½Î»´ÏÃ÷µÄ¼Ò»ïËùÉè¼ÆµÄ JUnit µÄPython°æ±¾¡£ ¶øJUnitÓÖÊÇKentÉè¼ÆµÄSmalltalk²âÊÔ¿ò¼ÜµÄJava°æ±¾¡£ËüÃǶ¼ÊǸ÷×ÔÓïÑԵıê×¼²âÊÔ¿ò¼Ü¡£

23.C/C++µ¥Ôª²âÊÔ¿ò¼Ü CppUTest

ÊÚȨЭÒé:BSD

¿ª·¢ÓïÑÔ:C/C++

²Ù×÷ϵͳ:¿çƽ̨

CppUTest Ïêϸ½éÉÜ

CppUTest ÊÇÒ»¸ö¹¦ÄÜÈ«ÃæµÄ²âÊÔ¿ò¼Ü¡£

CppUTestÊÇΪÁËÖ§³ÖÔÚ¶àÖÖ²Ù×÷ϵͳÉÏ¿ª·¢Ç¶ÈëʽÈí¼þ¶øÌرðÉè¼ÆµÄ¡£CppUTestµÄºê±»Éè¼Æ³É²»ÐèÒªÁ˽âC++Ò²¿ÉÒÔд²âÊÔÓÃÀý¡£ÕâʹµÃC³ÌÐòÔ±¸üÈÝÒ×ÓÃÕâ¸ö²âÊÔ¿ò¼Ü¡£

CppUTestֻʹÓÃC++ÓïÑÔÖÐÖ÷ÒªµÄÄDz¿·Ö×Ó¼¯£¬ÕâÖÖÑ¡ÔñºÜºÃµØÊÊÓ¦ÁËÄÇЩ±àÒëÆ÷²»ÄÜÍêȫ֧³ÖÈ«²¿C++ÓïÑÔÌØÐÔµÄǶÈëʽ¿ª·¢¡£Äã»á¿´µ½ÓÃUnityºÍCppUTestд³öµÄµ¥Ôª²âÊÔ¼¸ºõһģһÑù¡£Ä㵱Ȼ¿ÉÒÔÑ¡ÔñÈÎÒâÒ»¸ö²âÊÔ¿ò¼ÜÀ´½øÐÐÄãµÄ²úÆ·¿ª·¢¡£

24.C++µ¥Ôª²âÊÔ¿ò¼Ü CppUnit

ÊÚȨЭÒé:δ֪

¿ª·¢ÓïÑÔ:C/C++

²Ù×÷ϵͳ:¿çƽ̨

CppUnit Ïêϸ½éÉÜ

CppUnit ÊǸö»ùÓÚ LGPL µÄ¿ªÔ´ÏîÄ¿£¬×î³õ°æ±¾ÒÆÖ²×Ô JUnit£¬ÊÇÒ»¸ö·Ç³£ÓÅÐãµÄ¿ªÔ´²âÊÔ¿ò¼Ü¡£CppUnit ºÍ JUnit Ò»ÑùÖ÷Ҫ˼ÏëÀ´Ô´ÓÚ¼«ÏÞ±à³Ì£¨XProgramming£©¡£Ö÷Òª¹¦ÄܾÍÊǶԵ¥Ôª²âÊÔ½øÐйÜÀí£¬²¢¿É½øÐÐ×Ô¶¯»¯²âÊÔ¡£

²âÊÔÇý¶¯¿ª·¢(TDD)ÊÇÒÔ²âÊÔ×÷Ϊ¿ª·¢¹ý³ÌµÄÖÐÐÄ£¬Ëü¼á³Ö£¬ÔÚ±àдʵ¼Ê´úÂë֮ǰ£¬ÏÈдºÃ»ùÓÚ²úÆ·´úÂëµÄ²âÊÔ´úÂë¡£¿ª·¢¹ý³ÌµÄÄ¿±ê¾ÍÊÇÊ×ÏÈʹ²âÊÔÄܹ»Í¨ ¹ý£¬È»ºóÔÙÓÅ»¯Éè¼Æ½á¹¹¡£²âÊÔÇý¶¯¿ª·¢Ê½ÊǼ«ÏÞ±à³ÌµÄÖØÒª×é³É²¿·Ö¡£XUnit£¬Ò»¸ö»ùÓÚ²âÊÔÇý¶¯¿ª·¢µÄ²âÊÔ¿ò¼Ü£¬ËüΪÎÒÃÇÔÚ¿ª·¢¹ý³ÌÖÐʹÓòâÊÔÇý¶¯¿ª·¢ ÌṩÁËÒ»¸ö·½±ãµÄ¹¤¾ß£¬Ê¹ÎÒÃǵÃÒÔ¿ìËٵĽøÐе¥Ôª²âÊÔ¡£XUnitµÄ³ÉÔ±Óкܶ࣬ÈçJUnit£¬PythonUnitµÈ¡£CppUnit ¼´ÊÇXUnit¼Ò×åÖеÄÒ»Ô±£¬ËüÊÇÒ»¸öרÃÅÃæÏòC++µÄ²âÊÔ¿ò¼Ü¡£

25.AdaÓïÑԵĵ¥Ôª²âÊÔ AUnit

ÊÚȨЭÒé:δ֪

²Ù×÷ϵͳ:¿çƽ̨

AUnit Ïêϸ½éÉÜ

AUnit ÊÇ Ada ±à³ÌÓïÑԵĵ¥Ôª²âÊÔ¹¤¾ß£¬ÀàËÆÓÚ JUnit¡£

26.Cµ¥Ôª²âÊÔ¿ò¼Ü zCUT

µ¥Ôª²âÊÔ¹¤¾ß

ÊÚȨЭÒé:GPL

¿ª·¢ÓïÑÔ:C/C++

²Ù×÷ϵͳ:¿çƽ̨

Èí¼þ×÷Õß:zbaitu

zCUT Ïêϸ½éÉÜ

Cµ¥Ôª²âÊÔ¿ò¼Ü¡£

ÌØµã£º

CÓïÑÔʵÏÖ¡£clang±àÒë¡£std=gnu89¡£

ʹÓúê¼òµ¥µØ×¢²ácase, suite£¬·á¸»µÄ¶ÏÑÔ£¬·ç¸ñÀàËÆgoogle test¡£

Á¼ºÃµÄ½á¹ûÊä³ö¡£

zBaitu / zCUT

27. EJB²âÊÔ¹¤¾ß Ejb3Unit

ÊÚȨЭÒé:δ֪

¿ª·¢ÓïÑÔ:Java

²Ù×÷ϵͳ:¿çƽ̨

Ejb3Unit Ïêϸ½éÉÜ

Ejb3Unit ÊÇÒ»¸öÎÞÐèEJB ÈÝÆ÷µÄ EJB 3.0 µÄµ¥Ôª²âÊÔ¿ò¼Ü£¬À©Õ¹ÓÚ JUnit £¬ÎªËùÓÐµÄ EJB ÏîÄ¿Ìṩ×Ô¶¯»¯²âÊԵŤ¾ß

28. PerlUnit

ÊÚȨЭÒé:δ֪

¿ª·¢ÓïÑÔ:Perl

²Ù×÷ϵͳ:δ֪

PerlUnit Ïêϸ½éÉÜ

JUnitµÄPerl°æ

29.PythonUnit

ÊÚȨЭÒé:δ֪

¿ª·¢ÓïÑÔ:Python

²Ù×÷ϵͳ:δ֪

PythonUnit Ïêϸ½éÉÜ

JUnitµÄPython°æ

30.C++ µ¥Ôª²âÊÔ¿ò¼Ü cipra

ÊÚȨЭÒé:BSD

¿ª·¢ÓïÑÔ:C/C++

²Ù×÷ϵͳ:¿çƽ̨

cipra Ïêϸ½éÉÜ

cipra ÊÇÒ»¸ö¼òµ¥µÄ¡¢¼æÈÝ TAP (Test Anything Protocol) µÄ C++ µ¥Ôª²âÊÔ¿ò¼Ü¡£100% ʹÓñê×¼µÄ C++11 ±àд£¬Ö»Ìṩһ×éÍ·Îļþ£¬¿ÉºÜ·½±ãµÄÔÚÄãµÄ C++11 ÏîÄ¿ÖÐʹÓá£

 
   
4843 ´Îä¯ÀÀ       30
Ïà¹ØÎÄÕÂ

΢·þÎñ²âÊÔÖ®µ¥Ôª²âÊÔ
һƪͼÎÄ´øÄãÁ˽â°×ºÐ²âÊÔÓÃÀýÉè¼Æ·½·¨
È«ÃæµÄÖÊÁ¿±£ÕÏÌåϵ֮»Ø¹é²âÊÔ²ßÂÔ
È˹¤ÖÇÄÜ×Ô¶¯»¯²âÊÔ̽Ë÷
Ïà¹ØÎĵµ

×Ô¶¯»¯½Ó¿Ú²âÊÔʵ¼ù֮·
jenkins³ÖÐø¼¯³É²âÊÔ
ÐÔÄܲâÊÔÕï¶Ï·ÖÎöÓëÓÅ»¯
ÐÔÄܲâÊÔʵÀý
Ïà¹Ø¿Î³Ì

³ÖÐø¼¯³É²âÊÔ×î¼Ñʵ¼ù
×Ô¶¯»¯²âÊÔÌåϵ½¨ÉèÓë×î¼Ñʵ¼ù
²âÊԼܹ¹µÄ¹¹½¨ÓëÓ¦ÓÃʵ¼ù
DevOpsʱ´úµÄ²âÊÔ¼¼ÊõÓë×î¼Ñʵ¼ù