自動化ユニットテストでは、JavaScript
-
01-07-2019 - |
質問
ようにしている仕掛けを盛り込みJavaScriptユニットテストに私の自動構築す。現在JSUnit作業にかかる程度php,c#,dにもあるようでabandonwareが良い支援のためのAJAXアプリケーションのデバッグ、タイムアウト。
であった神の自動化(蟻)ブなどの油井試験、JQueryのQUnit、jQUnit(http://code.google.com/p/jqunit/)?
注意:使っていインターフェー AJAX図書館で問題と道場のDOHことが必要ですし、独自のAJAX機能通話やイベントハンドラについてのAJAXユニットテスト。
解決
多くのjavascript単体テストの枠組みが(jsUnit,scriptaculous,...)がjsUnitのかが取得できるようにする自動化。
行っているのだとかを'true'ユニットテストをすべきなのAJAX対応。例えば、を使用している場合には、これはRPC ajaxの枠組みなどDWR、簡単に書く模擬機能:
function mockFunction(someArg, callback) { var result = ...; // some treatments setTimeout(
function() { callback(result); }, 300 // some fake latency
); }
り、JsUnitな取り扱タイムアウト: シミュレー時間jsUnit試験
他のヒント
私だけから始めてみるというJavascriptのテスト駆動開発の新しいプロジェクトをスタートしました。私の現在の計画の使用 qunit のユニットテスト。を展開しながら、試験走行ができるだけで爽やかな試験のページをブラウザです。
継続的な統合を確保すること試験走すべてのブラウザ)を使用 セレン 自動負荷試験のハーネスは各ブラウザでの読み込みます。これらの試験が行われますべてのリビジョンまたはチェックイン-ソース。
また利用 JSCoverage をコード-カバレッジ分析のテストを実施していた。このもの自動化とセレン.
私は現在の設定です。私はこの答えをより正確に詳細の設定を打ちます。
試験ツール
Im大ファンの js-試験-ドライバー
でも使うことができCI環境を獲得することができ実際のブラウザのためのクロスブラウザの試験をします。
私は最近の記事によるブルーノを使用JsUnitをJsMockの枠組みの...非常に興味深い。おうと思っていを仕事の開始ユニット試験は私のJavascriptコードです。
ただ ったハドソンCI走JasmineBDD (ヘッドレス)、少なくとも純javascriptユニットテスト。
(ハドソンのJavaによ殻、Envjs、JasmineBDD.)
いで素敵な大図書館のないように、試作品です。
見 YUITest
私は契約jsunitは死にvine.まだ完全に置き換えゆいます。
類似の例を用いqUnitし、試験用セレン.またこの試験から独立した当社のその他のセレン試験を単純にしておりませんので、依存関係る通常のUIの回帰テストを(例えば展開のアプリはサーバー.
を開始して利用されてきましたが、基javascriptファイルに含まれる全てのテストをhtmlファイルです。この扱いの設定はゆいインスタンス試験により、ランナー、ゆい.テストです。スイートオブジェクトのテストです。ます。この方法を通じてアクセスできるセレンの試験スイートは、チェックがテストランナーが走行実績はないですが、この試験結果(またはJSON形式)
var yui_instance; //the YUI instance
var runner; //The YAHOO.Test.Runner
var Assert; //an instance of YAHOO.Test.Assert to save coding
var testSuite; //The YAHOO.Test.Suite that will get run.
/**
* Sets the required value for the name property on the given template, creates
* and returns a new YUI Test.Case object.
*
* @param template the template object containing all of the tests
*/
function setupTestCase(template) {
template.name = "jsTestCase";
var test_case = new yui_instance.Test.Case(template);
return test_case;
}
/**
* Sets up the test suite with a single test case using the given
* template.
*
* @param template the template object containing all of the tests
*/
function setupTestSuite(template) {
var test_case = setupTestCase(template);
testSuite = new yui_instance.Test.Suite("Bond JS Test Suite");
testSuite.add(test_case);
}
/**
* Runs the YAHOO.Test.Suite
*/
function runTestSuite() {
runner = yui_instance.Test.Runner;
Assert = yui_instance.Assert;
runner.clear();
runner.add(testSuite);
runner.run();
}
/**
* Used to see if the YAHOO.Test.Runner is still running. The
* test results are not available until it is done running.
*/
function isRunning() {
return runner.isRunning();
}
/**
* Gets the results from the YAHOO.Test.Runner
*/
function getTestResults() {
return runner.getResults(yui_instance.Test.Format.JSON);
}
として、セレンでは、使用していましたパラメータ化されたテストです。弊社は試験の両方IE、FireFoxのデータ方式で、解析の試験結果のリストオブジェクトの配列と配列のブラウザ名、テストファイル名の通り、試験、氏名、その結果、失敗または無視)とすることができます。
実際の試験で主張試験の結果です。ない場合は等しい"パス"そして失敗した場合には、試験のメッセージから返された、ゆい試験結果です。
@Parameters
public static List<Object[]> data() throws Exception {
yui_test_codebase = "file:///c://myapppath/yui/tests";
List<Object[]> testResults = new ArrayList<Object[]>();
pageNames = new ArrayList<String>();
pageNames.add("yuiTest1.html");
pageNames.add("yuiTest2.html");
testResults.addAll(runJSTestsInBrowser(IE_NOPROXY));
testResults.addAll(runJSTestsInBrowser(FIREFOX));
return testResults;
}
/**
* Creates a selenium instance for the given browser, and runs each
* YUI Test page.
*
* @param aBrowser
* @return
*/
private static List<Object[]> runJSTestsInBrowser(Browser aBrowser) {
String yui_test_codebase = "file:///c://myapppath/yui/tests/";
String browser_bot = "this.browserbot.getCurrentWindow()"
List<Object[]> testResults = new ArrayList<Object[]>();
selenium = new DefaultSelenium(APPLICATION_SERVER, REMOTE_CONTROL_PORT, aBrowser.getCommand(), yui_test_codebase);
try {
selenium.start();
/*
* Run the test here
*/
for (String page_name : pageNames) {
selenium.open(yui_test_codebase + page_name);
//Wait for the YAHOO instance to be available
selenium.waitForCondition(browser_bot + ".yui_instance != undefined", "10000");
selenium.getEval("dom=runYUITestSuite(" + browser_bot + ")");
//Output from the tests is not available until
//the YAHOO.Test.Runner is done running the suite
selenium.waitForCondition("!" + browser_bot + ".isRunning()", "10000");
String output = selenium.getEval("dom=getYUITestResults(" + browser_bot + ")");
JSONObject results = JSONObject.fromObject(output);
JSONObject test_case = results.getJSONObject("jsTestCase");
JSONArray testCasePropertyNames = test_case.names();
Iterator itr = testCasePropertyNames.iterator();
/*
* From the output, build an array with the following:
* Test file
* Test name
* status (result)
* message
*/
while(itr.hasNext()) {
String name = (String)itr.next();
if(name.startsWith("test")) {
JSONObject testResult = test_case.getJSONObject(name);
String test_name = testResult.getString("name");
String test_result = testResult.getString("result");
String test_message = testResult.getString("message");
Object[] testResultObject = {aBrowser.getCommand(), page_name, test_name, test_result, test_message};
testResults.add(testResultObject);
}
}
}
} finally {
//if an exception is thrown, this will guarantee that the selenium instance
//is shut down properly
selenium.stop();
selenium = null;
}
return testResults;
}
/**
* Inspects each test result and fails if the testResult was not "pass"
*/
@Test
public void inspectTestResults() {
if(!this.testResult.equalsIgnoreCase("pass")) {
fail(String.format(MESSAGE_FORMAT, this.browser, this.pageName, this.testName, this.message));
}
}
この階調を与えた画になります。
あ新しいプロジェクトをまとめて見ることができる実行 qunit 試験によるJava環境などant)ことができますaltova missionkit for enterprise software architectsには、以下のクライアント側の試験スイートとのユニット。
http://qunit-test-runner.googlecode.com
に使用しましたので単体テストまでjQueryプラグイン objx コードは、カスタムOO JavaScriptおよびすべてのものの確認画面に変わります。
いるプロジェクトの作用 Js-試験-ドライバー 主催 ジャスミン クローム10 ジャスミン-JSTD-アダプター などの活用 コード-カバレッジ 試験に含まれJS-試験-ドライバーです。が一問題が発生しに変更または更新のブラウザを CI環境 のジャスミンテスト走行かスムーズに行けの問題ansynchronous試験がどう意識ができたの周りをジャスミンクロックがなかなかない機会にパッチします。
私を掲載 ちっちゃな図書館 確認ブラウザに依存JavaScriptの試験を使うことなくブラウザです。ですnode.js モジュールを使用するzombie.js 負荷試験のページを閲覧します。私について書いたので 自分のブログ.こちらは自動化を次のように記述されています。
var browsertest = require('../browsertest.js').browsertest;
describe('browser tests', function () {
it('should properly report the result of a mocha test page', function (done) {
browsertest({
url: "file:///home/liam/work/browser-js-testing/tests.html",
callback: function() {
done();
}
});
});
});
たご質問の日及びその方が良いJSの試験lib/枠組み今ることができます。における有意差は見られなかっ心ようにTDD,BDD,Assetion無ンです。
多くの選手にはこのようなゲームモカ、チャイ、QUnit、ジャスミン。がご覧いただけます吟醸あらばしり"発売まであと この メJS/携帯-web検...
他JSテスティングフレームワークで実行されるとのAnt クロスチェック.あの例のクロスチェックによAntの構成ファイルをまとめていました。
クロスチェックを試み、成功をエミュレートするブラウザを含むモックスタイルの実装XMLHttpRequest、タイムアウト/間隔で出ています。
ませんので現在取り扱荷重javascriptからのwebページです。ご指定のjavascriptファイルにしたい負荷試験とします。すべてのJSから分離HTMLでもおまかせください。
長々と書きましたが、Antタスクを利用し JSファントム, では、プロセッサーとチップセッwebkitブラウザ、QUnit htmlのテストファイル内でAntビルドす。でも失敗の場合試験に失敗します。
これは高い評価をいただいていますの複数の試験です。