問題タブ [eunit]
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.
unit-testing - 複数のアプリでの Eunit エラー
次のディレクトリ構造があります。
myapp
メインディレクトリで次のように rebar を使用して eunit を実行します。
の 3 つのアプリに対して eunit を正しく実行しますapps/
。その後、親myapp
ディレクトリで eunit を実行しようとし、次のエラーをスローします。
質問:これを修正したり、eunit が親myapp
ディレクトリに対して実行されないようにするにはどうすればよいですか?
メイン ディレクトリのrebar.config
ファイルはmyapp
次のようになります。
erlang - rebar eunit の実行時にランタイム引数を erlang に渡す
私のスタートアップ スクリプトでは、次のように erlang を開始しています。
現在、単体テストを実行しようとしてrebar eunit
いるときに、-args_file オプションなどのカスタム ランタイム引数を rebar が開始する erlang プロセスに渡す方法はありますか? ドキュメントを高低から無駄に検索しました...
助けてくれてありがとう。
erlang - EUnitに例外スタックトレースを出力しない
EUnitを使用してテストを作成していますが、コンソールに例外の詳細が出力されることはありません。
次のErlangシェル出力でこのmodule:exp_test()を実行します
しかし、EUnitの出力では次の
EUnitは例外トレース情報を何も出力しません
eunitで詳細設定を試していますが、効果がありません。
eunitテスト結果に例外の詳細を出力したい。
ありがとう〜
unit-testing - EUnit テスト ジェネレーターとは
EUnitに関するドキュメントを読みましたが、テスト ジェネレーターの目的がわかりません。
ここで素敵なチュートリアルも読みましたが、まだ運がありません(少し高度すぎます)。
テスト ジェネレーター関数が一連のテストを返し、それが EUnit によって実行されることをある程度理解しています。(そうですか?)
残念ながら、私が現在自信を持っている唯一のことは、次のようなテストを書くことができるということです:
問題は、EUnit のテスト ジェネレーターは何のために必要であり、単純なテスト オブジェクトとどのような関係があるのかということです。
PSさまざまな自動化ツールと概念の助けを借りて作成された単体テストの素晴らしい世界(例)があることは知っていますが、その世界に入る方法がわかりません。
erlang - EUnitが.beamファイルを.eunit/ebinにコンパイルするのはなぜですか?
免責事項:この質問の作者は、主にErlang/OTPの理論的知識を持っています。
myapp/ebin
を介してディレクトリ内の非Erlang実行可能ファイルを呼び出す小さなOTPアプリケーションがありますopen_port()
。アプリケーション自体を実行すると、すべてがうまくいき、実行可能ファイルへのポートが正常に開かれます。
しかし、アプリケーションの単体テストを実行しようとすると、open_port()
失敗に依存するものが失敗します。EUnit
これは、アプリケーションを起動したときに、の下で実行可能ファイルを見つけようとするためmyapp/.eunit/ebin
です。
アプリケーション自体のコードを変更せずに、その動作を変更するにはどうすればよいですか?アプリケーション自体を実行するときと同じ現在のディレクトリでEUnitテストを実行するにはどうすればよいですか?(つまり、EUnitを実行できるようにするためだけに、実行可能ファイルへのパスを提供するコードを変更することはお勧めできません)。
編集:Erlangメーリングリストのアドバイスに従いましたが、をcode:priv_dir(myapp_name)
返します{error, bad_name}
。
編集:ファイルが含まれていて、ファイルとファイルの両方が.eunit/
含まれていることがわかります。今、私は完全に迷子になっています。を実行すると、コマンドを実行します。このコマンドは、ディレクトリ内の対応するファイルを呼び出すディレクトリ内の各ファイルを呼び出します(ファイルがテスト中に実行されたことを明確に示しています)。なんでそうなの?なぜ代わりにディレクトリからファイルを実行する必要があるのですか?modulename.beam
ebin/
modulename.beam
modulename_tests.beam
make test
rebar
eunit
modulename_tests.beam
ebin/
modulename.beam
.eunit/
filename:absname("")
modulename.beam
.eunit/
modulename.beam
.eunit/
ebin/
myapp/ebin
とにまったく同じ.beamファイルが必要なのはなぜmyapp/.eunit/ebin
ですか?
PS公式ドキュメントを読みましたが、解決策が見つかりませんでした。
erlang - ?_assertEqualが失敗したときに完全な期待値と値の情報を表示する
(かなり長い)バイナリが生成される単体テストをコーディングしています。生成されたバイナリは、生成されると予想されるものと等しいと断言したいと思います。「 rebareunit 」を介してeunitを実行しています。
つまり、このアサーションが失敗すると、出力は「...」で省略されます。完全な出力を確認して、違いがどこにあるかを特定できるようにします。
現在、一時的な解決策として「?debugFmt() 」を使用していますが、それに代わるもの(「 ?_assertEqual() 」に適用できる構成オプションまたは引数)があるかどうかを知りたいので、出力アサーションが失敗した場合にのみ表示されます)。
前もって感謝します!
編集:レゴシアの答えのために、私は複数のアサーションを持つテストジェネレーターを使用したテストサンプルを含めています:
erlang - Erlang で Eunit からテスト結果を取得する
単体テストを行うために Erlang と EUnit を使用しています。単体テストの実行を自動化するテスト ランナーを作成したいと考えています。問題は、eunit:test/1 が「エラー」または「OK」のみを返すように見え、テストのリストと、何が成功したか失敗したかという観点からそれらが返したものではないことです。
テストを実行し、実行されたテストとその成功/失敗状態の何らかの形式のデータ構造を取得する方法はありますか?
rest - Erlang YAWS: シンプルな REST Web サービスをテストするには?
シンプルな Erlang YAWS ベースの RESTful アプリケーションで、RESTful API に HTTP リクエストを送信し、サーバーからレスポンスを取得して、それらのレスポンスをテストする一連のテストを作成したいと考えています。
各「send-request-get-request-test」テストを EUnit 内から実行できれば (テスト ジェネレーターを使用できるようにして) 便利です。
rebar
また、この一連のテストを( )で実行できるようにしたいと考えていますmake test
。
最近は ibrowse
別のアプリ(Mochiweb)で使っていたのですが、静かで使いづらいと感じました。
HTTP リクエストを YAWS RESTful アプリケーションに送信できる Erlang/OTP テストを作成する他のオプションはありますか? それを行う最も一般的な方法は何ですか?
erlang - Eunit テストは受信を待機しません
Eunit は受信を待ちません。eunit に特別なものはありますか。
test_account:login_test().
直接呼び出すと、応答を受け取ることができます。
ありがとうございました。
erlang - ライブラリ アプリケーションに依存する Erlang EUnit テスト モジュール
少数のアプリケーションを含む中規模のリリースがあります。私は最近、いくつかの一般的な機能をリリース内のライブラリ アプリケーションにリファクタリングしました。undef
これにより、ライブラリ アプリケーションを必要とするものをテストするたび に、EUnit テストがメッセージで失敗しました。
セットアップは次のようなものです。
それで
次に、単体テストがsome_app:bar()
失敗します。私はそれらを実行していrebar eunit skip_deps=true
ます。私skip_deps=true
のリリースではサードパーティのアプリケーション (SQL など) を使用しているため、使用しています。
EUnitが依存関係なしでテスト対象のアプリを呼び出しているため、テストが失敗し始めると思いますか? これを修正する方法はありますか?依存関係を明示的に宣言するように .app ファイルを構成しました。リリースでは問題なく動作し、問題なく展開されてから約 1 日経ちましたが、テストに再び合格できれば、気分はずっと良くなります :)
(モッキング アプリを使用して をスタブ化するutils:foo/0
こともできます。それが慣用的に理想的な場所であることがわかりますが、この場合はやり過ぎのように思えます。なぜなら、utils:foo/0
(読む: 現実世界の対応物です) はいくつかの本当に単純なことを行うからです。)