±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚ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
ÏîÄ¿ÖÐʹÓá£

|