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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
KarmaºÍJasmine×Ô¶¯»¯µ¥Ôª²âÊÔ
 
×÷Õߣºviolet_day À´Ô´£ºCSDN ·¢²¼ÓÚ 2015-7-10
  2891  次浏览      33
 

ǰÑÔ

ÔÚJavaÁìÓò£¬Apache, Spring, JBoss Èý´óÉçÇøµÄ¿ªÔ´¿â£¬°üÂÞÍòÏ󣬵«Ã¿¸ö¿â¶¼ÔÚÆäÁìÓòÖж¼º×Á¢¼¦Èº¡£¶øNodejsÖи÷ÖÖ¸÷ÑùµÄ¿ªÔ´¿â£¬È´ÈÃÈËÑÛ»¨çÔÂÒ£¬²»Öª´ÓºÎÏÂÊÖ¡£

NodejsÁìÓò: Jasmine×öµ¥Ôª²âÊÔ£¬Karma×Ô¶¯»¯Íê³Éµ¥Ôª²âÊÔ£¬GruntÆô¶¯KarmaͳһÏîÄ¿¹ÜÀí£¬Yeoman×îºó·â×°³ÉÒ»¸öÏîĿԭÐÍÄ£°å£¬npm×önodejsµÄ°üÒÀÀµ¹ÜÀí£¬bower×öjavascriptµÄ°üÒÀÀµ¹ÜÀí¡£JavaÁìÓò£ºJUnit×öµ¥Ôª²âÊÔ, Maven×Ô¶¯»¯µ¥Ôª²âÊÔ£¬Í³Ò»ÏîÄ¿¹ÜÀí£¬¹¹½¨ÏîĿԭÐÍÄ£°å£¬°üÒÀÀµ¹ÜÀí¡£

NodejsÈÃ×éºÏ±äµÃ¸ü·á¸»£¬È´ÓÖÔÚ¼ÓÖØÎÒÃǵÄѧϰÃż÷¡£ÎÒ»¹Ëµ²»Çå³þ£¬Ò²¿´²»Í¸£¡

ÉÏÃæÐ´µÄÓеãÔ¶ÁË£¬»Øµ½ÎÄÕµÄÖ÷Ì⣬Jasmine+Karma×Ô¶¯»¯µ¥Ôª²âÊÔ¡£

1. KarmaµÄ½éÉÜ

KarmaÊÇTestacularµÄÐÂÃû×Ö£¬ÔÚ2012Äêgoogle¿ªÔ´ÁËTestacular£¬2013ÄêTestacular¸ÄÃûΪKarma¡£KarmaÊÇÒ»¸öÈÃÈ˸е½·Ç³£ÉñÃØµÄÃû×Ö£¬±íʾ·ð½ÌÖеÄÔµ·Ö£¬Òò¹û±¨Ó¦£¬±ÈCassandraÕâÖÖÃû×Ö¸üÈÃÈ˲²»Í¸£¡

KarmaÊÇÒ»¸ö»ùÓÚNode.jsµÄJavaScript²âÊÔÖ´Ðйý³Ì¹ÜÀí¹¤¾ß£¨Test Runner£©¡£¸Ã¹¤¾ß¿ÉÓÃÓÚ²âÊÔËùÓÐÖ÷Á÷Webä¯ÀÀÆ÷£¬Ò²¿É¼¯³Éµ½CI£¨Continuous integration£©¹¤¾ß£¬Ò²¿ÉºÍÆäËû´úÂë±à¼­Æ÷Ò»ÆðʹÓá£Õâ¸ö²âÊÔ¹¤¾ßµÄÒ»¸öÇ¿´óÌØÐÔ¾ÍÊÇ£¬Ëü¿ÉÒÔ¼à¿Ø(Watch)ÎļþµÄ±ä»¯£¬È»ºó×ÔÐÐÖ´ÐУ¬Í¨¹ýconsole.logÏÔʾ²âÊÔ½á¹û¡£

JasmineÊǵ¥Ôª²âÊÔ¿ò¼Ü£¬±¾µ¥½«½éÉÜÓÃKarmaÈÃJasmine²âÊÔ×Ô¶¯»¯Íê³É¡£JasmineµÄ½éÉÜ£¬Çë²Î¿¼ÎÄÕ£ºjasmineÐÐΪÇý¶¯,²âÊÔÏÈÐÐ
istanbulÊÇÒ»¸öµ¥Ôª²âÊÔ´úÂ븲¸ÇÂʼì²é¹¤¾ß£¬¿ÉÒÔºÜÖ±¹ÛµØ¸æËßÎÒÃÇ£¬µ¥Ôª²âÊÔ¶Ô´úÂëµÄ¿ØÖƳ̶ȡ£

2. KarmaµÄ°²×°

ϵͳ»·¾³:

win7 64bit, node v0.10.5, npm 1.2.19

°²×°Karma

~ D:\workspace\javascript>mkdir karma  
~ D:\workspace\javascript>cd karma
~ D:\workspace\javascript\karma>npm install -g karma

# ²âÊÔÊÇ·ñ°²×°³É¹¦
~ D:\workspace\javascript\karma>karma start
INFO [karma]: Karma v0.10.2 server started at http://localhost:9876/
INFO [Chrome 28.0.1500 (Windows 7)]: Connected on socket nIlM1yUy6ELMp5ZTN9Ek

´Óä¯ÀÀÆ÷¿´µ½karam½çÃæ¡£

ÏÂÃæÎÒÃÇÒª¿ªÊ¼ÅäÖÃkaram¡£

3. Karma + JasmineÅäÖÃ

³õʼ»¯karmaÅäÖÃÎļþkarma.conf.js

~ D:\workspace\javascript\karma>karma init  

Which testing framework do you want to use ?
Press tab to list possible options. Enter to move to the next question.
> jasmine

Do you want to use Require.js ?
This will add Require.js plugin.
Press tab to list possible options. Enter to move to the next question.
> no

Do you want to capture a browser automatically ?
Press tab to list possible options. Enter empty string to move to the next question.
> Chrome
>

What is the location of your source and test files ?
You can use glob patterns, eg. "js/*.js" or "test/**/*Spec.js".
Enter empty string to move to the next question.
>

Should any of the files included by the previous patterns be excluded ?
You can use glob patterns, eg. "**/*.swp".
Enter empty string to move to the next question.
>

Do you want Karma to watch all the files and run the tests on change ?
Press tab to list possible options.
> yes

Config file generated at "D:\workspace\javascript\karma\karma.conf.js".

°²×°¼¯³É°ükarma-jasmine

~ D:\workspace\javascript\karma>npm install karma-jasmine  

4. ×Ô¶¯»¯µ¥Ôª²âÊÔ

3²½×¼±¸¹¤×÷£º

1. ´´½¨Ô´Îļþ£ºÓÃÓÚʵÏÖijÖÖÒµÎñÂß¼­µÄÎļþ£¬¾ÍÊÇÎÒÃÇÆ½Ê±Ð´µÄjs½Å±¾

2. ´´½¨²âÊÔÎļþ£º·ûºÏjasmineAPIµÄ²âÊÔjs½Å±¾

3. ÐÞ¸Äkarma.conf.jsÅäÖÃÎļþ

1). ´´½¨Ô´Îļþ£ºÓÃÓÚʵÏÖijÖÖÒµÎñÂß¼­µÄÎļþ£¬¾ÍÊÇÎÒÃÇÆ½Ê±Ð´µÄjs½Å±¾

ÓÐÒ»¸öÐèÇó£¬ÒªÊµÏÖµ¥´Êµ¹Ð´µÄ¹¦ÄÜ¡£È磺¡±ABCD¡± ==> ¡°DCBA¡±

~ vi src.js  

function reverse(name){
return name.split("").reverse().join("");
}

2). ´´½¨²âÊÔÎļþ£º·ûºÏjasmineAPIµÄ²âÊÔjs½Å±¾

describe("A suite of basic functions", function() {  
it("reverse word",function(){
expect("DCBA").toEqual(reverse("ABCD"));
});
});

3). ÐÞ¸Äkarma.conf.jsÅäÖÃÎļþ

ÎÒÃÇÕâÀïÐèÒªÐ޸ģºfilesºÍexclude±äÁ¿

module.exports = function (config) {  
config.set({
basePath: '',
frameworks: ['jasmine'],
files: ['*.js'],
exclude: ['karma.conf.js'],
reporters: ['progress'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: true,
browsers: ['Chrome'],
captureTimeout: 60000,
singleRun: false
});
};

Æô¶¯karma

µ¥Ôª²âÊÔÈ«×Ô¶¯Ö´ÐÐ

~ D:\workspace\javascript\karma>karma start karma.conf.js
INFO [karma]: Karma v0.10.2 server started at http://localhost:9876/
INFO [launcher]: Starting browser Chrome
WARN [launcher]: The path should not be quoted.
Normalized the path to C:\Program Files (x86)\Google\Chrome\Application\chrome.exe
INFO [Chrome 28.0.1500 (Windows 7)]: Connected on socket bVGffDWpc1c7QNdYye_6
INFO [Chrome 28.0.1500 (Windows 7)]: Connected on socket DtTdVbd4ZsgnMQrgye_7
Chrome 28.0.1500 (Windows 7): Executed 1 of 1 SUCCESS (3.473 secs / 0.431 secs)
Chrome 28.0.1500 (Windows 7): Executed 1 of 1 SUCCESS (0.068 secs / 0.021 secs)
TOTAL: 2 SUCCESS

ä¯ÀÀÆ÷»á×Ô¶¯´ò¿ª

ÎÒÃÇÐÞ¸Ätest.js

~ vi test.js

describe("A suite of basic functions", function() {
it("reverse word",function(){
expect("DCBA").toEqual(reverse("ABCD"));
expect("Conan").toEqual(reverse("nano"));
});
});

ÓÉÓÚkarma.conf.jsÅäÖÃÎļþÖÐautoWatch: true, ËùÒÔtest.jsÎļþ±£´æºó£¬»á×Ô¶¯Ö´Ðе¥Ôª²âÊÔ¡£

Ö´ÐÐÈÕÖ¾ÈçÏ£ºÌáʾÎÒÃǵ¥Ôª²âÊÔ³ö´íÁË¡£

INFO [watcher]: Changed file "D:/workspace/javascript/karma/test.js".  
Chrome 28.0.1500 (Windows 7) A suite of basic functions reverse word FAILED
Expected 'Conan' to equal 'onan'.
Error: Expected 'Conan' to equal 'onan'.
at null. (D:/workspace/javascript/karma/test.js:4:25)
Chrome 28.0.1500 (Windows 7): Executed 1 of 1 (1 FAILED) ERROR (0.3 secs / 0.006 secs)

5. KarmaºÍistanbul´úÂ븲¸ÇÂÊ

Ôö¼Ó´úÂ븲¸ÇÂʼì²éºÍ±¨¸æ£¬Ôö¼ÓistanbulÒÀÀµ

~ D:\workspace\javascript\karma>npm install karma-coverage  

ÐÞ¸Äkarma.conf.jsÅäÖÃÎļþ

~ vi karma.conf.js  
reporters: ['progress','coverage'],
preprocessors : {'src.js': 'coverage'},
coverageReporter: {
type : 'html',
dir : 'coverage/'
}

Æô¶¯karma start£¬ÔÚ¹¤³ÌĿ¼ÏÂÃæÕÒµ½index.htmlÎļþ£¬coverage/chrome/index.html

´ò¿ªºó£¬ÎÒÃÇ¿´µ½´úÂë²âÊÔ¸²¸ÇÂ̱¨¸æ

¸²¸ÇÂÊÊÇ100%£¬ËµÃ÷ÎÒÃÇÍêÕûÁ˲âÊÔÁËsrc.jsµÄ¹¦ÄÜ¡£

½ÓÏÂÀ´£¬ÎÒÃÇÐÞ¸Äsrc.js£¬Ôö¼ÓÒ»¸öif·ÖÖ§

function reverse(name){  
if(name=='AAA') return "BBB";
return name.split("").reverse().join("");
}

ÔÙ¿´¸²¸ÇÂʱ¨¸æ£¬

Statements£º75%¸²¸Ç£¬Branches£º50%¸²¸Ç¡£

ΪÁ˲úÆ·µÄÖÊÁ¿ÎÒÃÇÒª¾¡Á¿´ïµ½¸ü¶àµÄ¸²¸ÇÂÊ£¬Ò»°ã¶ÔÓÚJAVAÏîÄ¿À´Ëµ£¬ÄÜ´ïµ½80%¾ÍÊÇÏ൱¸ßµÄ±ê×¼ÁË¡£¶ÔÓÚJavascriptµÄ´úÂë²âÊÔ¼°¸²¸ÇÂÊÑо¿£¬ÎÒ»¹Òª×ö¸ü¶àµÄÑéÖ¤¡£

6. KarmaµÚÒ»´ÎÆô¶¯Ê±³öÏÖµÄÎÊÌâ

CHROME_BINµÄ»·¾³±äÁ¿ÎÊÌâ

~ D:\workspace\javascript\karma>karma start karma.conf.js
INFO [karma]: Karma v0.10.2 server started at http://localhost:9876/
INFO [launcher]: Starting browser Chrome
ERROR [launcher]: Cannot start Chrome
Can not find the binary C:\Users\Administrator\AppData\Local\Google\Chrome\Application\chrome.exe
Please set env variable CHROME_BIN

ÉèÖ÷½·¨£ºÕÒµ½ÏµÍ³ÖÐchromeµÄ°²×°Î»Öã¬ÕÒµ½chrome.exeÎļþ

~ D:\workspace\javascript\karma>set
 CHROME_BIN="C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"
   
2891 ´Îä¯ÀÀ       33
Ïà¹ØÎÄÕÂ

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

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

³ÖÐø¼¯³É²âÊÔ×î¼Ñʵ¼ù
×Ô¶¯»¯²âÊÔÌåϵ½¨ÉèÓë×î¼Ñʵ¼ù
²âÊԼܹ¹µÄ¹¹½¨ÓëÓ¦ÓÃʵ¼ù
DevOpsʱ´úµÄ²âÊÔ¼¼ÊõÓë×î¼Ñʵ¼ù
×îл¼Æ»®
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢ 6-12[ÏÃÃÅ]
È˹¤ÖÇÄÜ.»úÆ÷ѧϰTensorFlow 6-22[Ö±²¥]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 6-30[±±¾©]
ǶÈëʽÈí¼þ¼Ü¹¹-¸ß¼¶Êµ¼ù 7-9[±±¾©]
Óû§ÌåÑé¡¢Ò×ÓÃÐÔ²âÊÔÓëÆÀ¹À 7-25[Î÷°²]
ͼÊý¾Ý¿âÓë֪ʶͼÆ× 8-23[±±¾©]

LoadRunnerÐÔÄܲâÊÔ»ù´¡
Èí¼þ²âÊÔ½á¹û·ÖÎöºÍÖÊÁ¿±¨¸æ
ÃæÏò¶ÔÏóÈí¼þ²âÊÔ¼¼ÊõÑо¿
Éè¼Æ²âÊÔÓÃÀýµÄËÄÌõÔ­Ôò
¹¦ÄܲâÊÔÖйÊÕÏÄ£Ð͵Ľ¨Á¢
ÐÔÄܲâÊÔ×ÛÊö


ÐÔÄܲâÊÔ·½·¨Óë¼¼Êõ
²âÊÔ¹ý³ÌÓëÍŶӹÜÀí
LoadRunner½øÐÐÐÔÄܲâÊÔ
WEBÓ¦ÓõÄÈí¼þ²âÊÔ
ÊÖ»úÈí¼þ²âÊÔ
°×ºÐ²âÊÔ·½·¨Óë¼¼Êõ


ij²©²ÊÐÐÒµ Êý¾Ý¿â×Ô¶¯»¯²âÊÔ
IT·þÎñÉÌ Web°²È«²âÊÔ
IT·þÎñÉÌ ×Ô¶¯»¯²âÊÔ¿ò¼Ü
º£º½¹É·Ý µ¥Ôª²âÊÔ¡¢Öع¹
²âÊÔÐèÇó·ÖÎöÓë²âÊÔÓÃÀý·ÖÎö
»¥ÁªÍøweb²âÊÔ·½·¨Óëʵ¼ù
»ùÓÚSeleniumµÄWeb×Ô¶¯»¯²âÊÔ