2013-06-18 6 views
5

私はキャスパーJSテストのセットを持っていて、成功した場合には0で、エラーではゼロでないか、テストの失敗で終了コードを得たいと思っています(私はcasperコマンドをjavaから実行し、 )。キャスパーJSがテストの成功ステータスを示す終了コードを返すようにするにはどうすればよいですか?

問題は、終了コード0が常に返されることです。次のコマンドの全てが0の終了コードになり

var casper = require('casper').create(); 

casper.start('http://www.google.com', function() { 
    this.test.assertEquals(true, casper.cli.options['value']); 
}); 

casper.run(function() { 
     casper.test.done(1); 
}); 

:ここでは、この問題が発生した例のテストで私はキャスパーを呼び出し、テストが成功したか失敗したかどうかを判断するにはどうすればよい

C:/casperjs/bin/casperjs test --value=true C:/Temp/simpletest.js 
C:/casperjs/bin/casperjs test --value=false C:/Temp/simpletest.js 
C:/casperjs/bin/casperjs --value=true C:/Temp/simpletest.js 
C:/casperjs/bin/casperjs --value=false C:/Temp/simpletest.js 

は/ Javaからエラーが発生しましたか?

+0

どのようにして最終的に予想される終了コードを返すことができましたか? –

答えて

0

問題は、常に終了コード0が返されることです。

あなたのキャスパーテストはそのようにする必要があります:

var casper = require('casper').create(); 
var system = require('system'); 
var param; 

casper.start('http://www.google.com', function() { 

    //get parameter from command line 
    system.args.forEach(function (arg, i) { 
     if(arg.search(/--value=/i) != -1){ 
      param = arg.replace(/--value=/g, ""); 
     } 
    });  

    this.test.assertEquals(true, Boolean(param)); 
}); 

casper.run(function() { 
     this.test.done(1); 
     this.test.renderResults(true); 
}); 

実行するには:

casperjs simpletest.js --value =真

どのように私はキャスパーを呼び出すことができますテストがJavaから成功したか失敗したかを判断します。

あなたはこの答えになります。

CasperJS passing data back to PHP

0

まず、あなたはhttp://docs.casperjs.org/en/latest/testing.html#test-command-args-and-options

は、あなたのコードから

var casper = require('casper').create(); 

を削除する参照、テストモードでキャスパーのインスタンスを上書きすることはできません。

その後

casper.start('http://www.google.com', function(test) { 
    test.assertEquals(true, casper.cli.options['value']); 
}); 

スタートは、各テストはもちろん

String[] args = {"/bin/sh", "-c", "casperjs test --fail-fast simpletest.js"}; 

Process proc = Runtime.getRuntime().exec(args); 

logger.log(Level.INFO, IOUtils.toString(proc.getInputStream())); 
String warnings = IOUtils.toString(proc.getErrorStream()); 

if (StringUtils.isNotBlank(warnings)) { 
    logger.log(Level.WARNING, warnings); 
} 

int exitValue = proc.exitValue(); 

assertEquals(0, exitValue); 

Javaで1

その後コードで終了するように

--fail-fast 

でcasperjsてみます〜する必要がある環境に合わせてパスを変更してください。

希望に役立ちます!

+0

を参照してください。フロントエンドテスト:https://github.com/structr/structr/blob/develop/structr-ui/src/test/java/org/structr/web/test/FrontendTest.java –

0

戻る失敗の定義済みのコード(私たちのために例えばのために、我々は)ランダム(99を与えた)

//Capture all fails 
casper.test.on("fail", function() { 
    casper.exit(99); 
}); 

同様にあなたが

例えば、高レベルでの他の問題のために異なるコードを定義することができます取得するにはロジックを再試行してくださいonWaitTimeoutコード

casper.options.onWaitTimeout = function() { 
    casper.screenCapture('POETerror', true); 
    this.exit(98); 
}; 
関連する問題