問題タブ [common-test]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
erlang - 鉄筋を使用した場合の Common Test のカバー レポート
Rebar を使用する Erlang アプリケーションがあり、Common Test を使用して記述されたテストがあります。これらのテストのテスト カバレッジ レポートを見たいので、rebar.config
ファイルに次の行を含めました。
ただし、Common Test レポートの「Coverage log」リンクは、「Cover tool is not used」というページにつながるだけです。カバー ツールを使用して、テストの実行時にカバー レポートを提供するにはどうすればよいですか?
github - Erlang/OTP のナイトリー ビルドはありますか?
ソースから Erlang をビルドすることができ、 https://github.com/erlang/otp/wiki/Running-testsに記載されている手順に従って、ソースに同梱されているテストも実行しました。合計 11000 のテスト ケースのうち約 900 の失敗が見られますが、次の点で失敗はあまり魅力的ではありません。
- 成功率を示す Erlang/OTP のナイトリー ビルドはありますか?
- このプラットフォーム (私の場合は x86 Linux) で失敗すると予想されますか?
- それらが既知の問題でない場合、関連するプル リクエストまたはバグ レポートがあるかどうかを確認するにはどうすればよいですか?
ありがとう!
erlang - erlang 共通テストによる分散テスト
現在、私は Erlang を使用していますが、共通テスト フレームワークを使用して分散テストを行う必要があると考えています。私はこれについていくつかの記事を読みました。しかし、私は自分のアプリケーションを複数のノードで実行できませんct_master
. それは何日も私を悩ませます — スレーブノードは私自身のアプリケーションを含めることができません. これについて何かお知らせいただけますか?
ディレクトリツリー:
テストスイートは次のとおりです。
仕様ファイルは次のとおりです。
を実行してから、erlang シェルでerl -name ct@localhost
実行します。ct_master:run("test/dist.spec")
共通テストは常に message で終了します{badmatch,{error,{"no such file or directory","aaa.app"}}}
。
configuration - Erlang 構成ファイル (複数のアプリケーション用) を rebar を使用して Common Test に適用する
Erlangで説明されているように構成ファイルを作成しました-- configは、それぞれが独自の Common Test suites ディレクトリを持つ複数のサブアプリで構成されるアプリケーションの構成です。ビルドとテストには rebar を使用します。ディレクトリ構造は次のようになります。
whereapps.config
には、すべてのアプリの構成が含まれています。VM を起動すると、erl -pa deps/*/ebin -pa apps/*/ebin -config apps
すべて正常に動作します。に追加{ct_extra_params, "-erl_args -config rpm"}.
しましたrebar.config
が、実行すると が呼び出されたrebar ct
ときにエラーが発生します。application:get_env/1,2
rebar でこれを行うことができない場合は、代わりに make を使用することもできます。Erlang - External Configuration Dateで説明されているように、どうにかして構成を Common Test にロードできることは知っていますが、すでにapps.config
.
更新: ct_run -dir apps/app1/test -pa deps/*/ebin -pa apps/*/ebin -erl_args -config rpm
期待どおりに動作します。問題は、各アプリケーションのテストを実行するときに rebar が cwd を変更するため、-config rpm
オプションが既存のファイルを指していないことだと思います。とにかく回避策を見つけることができませんでした。
erlang - Erlang Common Test カバレッジ仕様ファイル - 相対パス
erlang プロジェクトでコード カバレッジ分析に Common Test を使用しています。
ファイル構造
ソース コードの .beam ファイルは ebin/ にあり、テストの場合はテスト ソースと共に test/ にあります。
現在、.coverspec-file 内の .beam ファイルへの絶対パスを使用しています。
myProject.coverspec:
これは機能しますが、プロジェクトの開発が分散されているため、最適とは言えません。
ct_run はプロジェクトのベースである myProject から呼び出されます。パスは myProject に相対的ではなく、別の場所にあるようです。
myProject と myProject/test の両方に関連するパスを試しましたが、成功しませんでした。
私の質問は、 myProject.coverspec の相対パスはどこですか?
erlang - 一般的なテストでエラー処理をテストするには?
common test
erlang のテスト フレームワークとして使用し始めています。
正の数のみを受け入れると予想される関数があり、それ以外の場合は吹き飛ばされるとします。
そしてそれをテストしたい
正常に完了しません。
この動作をテストするにはどうすればよいですか? 他の言語では、テスト ケースは何らかのエラーまたは例外を想定しており、テスト対象の関数が無効な無効なパラメーターに対してエラーをスローしない場合は失敗します。共通テストでそれを行う方法は?
アップデート:
私はそれを動作させることができます
しかし、これは冗長すぎると思います。次のようなものが欲しいです:
一般的なテストのどこかにこれがあり、フレームワークに関する適切な知識が不足しているため、このような冗長なソリューションを採用していると思います。
更新: Michael の応答に触発されて、次の関数を作成しました。
そして私のテストは次のようになりました:
しかし、すべてのテストケースでassert_fail
呼び出しを行うよりも、呼び出しを行う方が少し読みやすいので、うまくいくと思います。try....catch
Common Test にはより良い実装が存在するはずだと私はまだ考えています。IMO は、このテスト パターンをすべてのプロジェクトで繰り返し実装するのは醜い繰り返しです。
erlang - すべての関数を共通テスト用にのみエクスポートするにはどうすればよいですか?
eunit モジュールではなく、一般的なテスト SUITE で使用するために、erlang モジュールのすべての関数をエクスポートしようとしています。これまでのところ、うまくいきませんでした。私は rebar を使用して SUITE を実行していますが、この質問 ( http://lists.basho.com/pipermail/rebar_lists.basho.com/2011-October/001141.html ) に出くわしました。することはできますが、その方法は私にはうまくいきません。
{plugins, [rebar_ct]}.
rebar.configにも追加しましたが、違いはありません。関数を正常にエクスポートすると、すべてのテストがパスすることを指摘する必要がありますが、これは避けたいと思います。どんな助けでも大歓迎です。