問題タブ [test-more]
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.
perl - Test :: Moreで「ok()でない限りskip()」と書くのは問題ありませんか?
ドキュメントを確認しましたが、クエリに対する明確な回答が見つかりません。
私の多くのテストでは、SKIP
ブロックの実行は前のテストの成功を条件としています。
だから、例えば、これは私が書いたものです:
テストが変更された場合、2つの場所を変更する必要がないので、DRY-erと同等のものが必要です。
私の最初のテストは、2つのスニペットが同等であることを示唆しています。
しかし、ドキュメントの何かが私の目に留まりました。
各
SKIP
ブロックにはラベルが必要です。そうSKIP
でない場合Test::More
、その魔法は機能しません。
ここでの私の懸念は、魔法がok()
ブロック内にあるため、魔法がに波及する可能性があることです。
perl - TAP における待機ステータスの意味は何ですか?
これは何よりも私の理解に対する質問です。Test::More
を介していくつかのテストを実行するために使用していますTAP::Harness
。
テストが実行されると、終了コードと待機コードが返されます。
Test::More
終了コードは、ドキュメントに従って、失敗時にゼロ以外を返すように設計されています。
しかし、待機コードは何を意味するのでしょうか? 私が実行しているテストでは、失敗したテストの数 (256 * n) の倍数のようです。
私の推測では、プロトコルは Unix 風の親子プロセス関係をエミュレートしようとしているのですが、待機コードについては何も知りません。
perl - コロテスト::もっと見る
テストスクリプトを書いているCoroプログラムが動作しています
これは、私がテストしようとしている方法の縮小版です
それは私に与えます
私の(実際の)プログラムは、コルーチンをオフに設定し、何もする必要がないため、不自然な例ではありません。
感謝して受け取った助け。(unloop と EV::run は必要ないと思います)
perl - Test::More とその仲間を使用して、継承された動作を自動的にテストするにはどうすればよいですか?
環境:
互いに継承するいくつかのモジュールがあるとします ( Moose などではなく、 base
andを使用した昔ながらの継承を使用します)。継承し、継承します。これらのモジュールのすべてには、 で書かれたテスト スイートがあります。子クラスのテスト スイートは、それが実装するメソッドのみをテストします。子クラスは、親にない新しいメソッドを追加する場合がありますが、必ずしも親のすべてのメソッドをオーバーライドするわけではありません。parent
Foo::Bar
Foo
Foo::Bar::Baz
Foo::Bar
Test::More
質問:
Test::More
サブクラス固有の動作をテストするだけでなく、継承された動作/親クラスのテストスイートも実行するテストを作成できるテストフレームワーク、手法、または機能はありますか? 基本的に、サブクラスのユニークな/特別な動作のテストを作成できるものを探していますが、サブクラスがその親クラスが期待されるのと同じようにテストで動作することもテストして確認します.
私が試したこと:
文字列で指定されたモジュールのインスタンスを構築し、要求されたモジュールのタイプに応じてそれに対してテストを実行するジェネレーター メソッドを使用して、非常に単純なテスト ハーネスを作成しました (サブクラス/スーパークラスの階層を追跡する中央ハッシュがあります)。 、しかし、これは粗雑に思えます。私は、(私が Perl で行う必要があるほとんどのことと同様に) 他の誰かが、はるかにエレガントで堅牢な方法でこれを既に行っていると想定しています。
perl - Test::More での eval 中のグローバル変数の保護
use_ok
Test::More のコードをスクロールしていたのは、とrequire_ok
がどのように実装されているか (および Ovid がそれらを好まない理由)を確認したかったからです。サブルーチンにたどり着きました。この_eval
サブルーチンには、呼び出し中に変数を保護するための完全には理解できない特別なロジックが含まれていeval
ます。Try::Tinyのドキュメントから、対処の難しさを理解しています$@
。$!
ただし、 andの処理がわかりません$SIG{__DIE__}
(以下、ブロックをそのままコピー):
の扱いはRT #34065$SIG{__DIE__}
に関連していますが、まだわかりません。変数は常にブロックの最後の行で設定する必要があるため、最後の行で変数を再度設定する必要があるのはなぜですか? これらの行の要点が、呼び出しで変数を設定することである場合、そもそもなぜローカライズする必要があるのでしょうか?eval
また、eval
エラー変数を上書きせずに使用することが と の両方$@
をローカライズすることを意味する場合$!
、 もローカライズする必要はありません$?
か?
perl - デフォルトの Module::Build / Test::More ディレクトリを "lib" から別のディレクトリに変更するにはどうすればよいですか?
Perl ユニット テストとコード カバレッジに関するこの投稿のディレクトリとファイル アーキテクチャを使用して(非常に役に立ちました)、ユニット テストとコード カバレッジを実行するファイルを新しい "lib" ディレクトリにコピーすると、次のように動作します。魅力!
ただし、モジュールが既存の「scripts」ディレクトリを検索する必要があります..
CPANの Module::Build ドキュメントをくまなく調べましたが、まだCan't find file lib/processBuildSubs.pmエラーが発生します
これが私がこれまでに持っているものです...
アップデート!
これも試してみました..
私が推測するいくつかの進歩は、 lib/scripts/..を見ているようですが、まだ必要なものではありません..
アップデート!
一種のハック作業ですが、今のところ、それは私にとってはうまくいきます..
このスクリプトを実行してディレクトリ名を変更し、tests/coverage を実行して、ディレクトリ名を元に戻します...誰かもっと良いアイデアがありますか?
perl - Devel::Cover Perl スクリプトとモジュールのカバレッジ データをマージする
Perl スクリプトとモジュールのカバレッジ用にデータをマージする際に問題があります.Devel::Cover を個別に実行すると問題なく動作しますが、データを結合しようとすると、モジュールではなく Perl スクリプトだけの統計が失われます..
説明させてください..
次のようなディレクトリツリーがあります..
ルート Code_Coverage_Test ディレクトリ内には、モジュールのテストをビルドする Build.pl ファイルと、いくつかのコマンドを自動化する他の 2 つのスクリプトを開始するスクリプトがあります。
./Build.pl
./startTests.sh
lib ディレクトリ内に、コード カバレッジを実行しようとしているファイルがあります。
lib/testPLCoverage.pl
lib/testPMCoverage.pm
t ディレクトリには、モジュール用の .t テスト ファイルと、テストを開始する 2 つのスクリプトがあります。どちらもルート ディレクトリの startTests.sh によって呼び出されます。
t/testPMCoverage.t
t/doPLtest.sh
t/doPMtest.sh
私が直面している問題は、doPLtests.sh スクリプトを実行すると、カバレッジ データが取得されることです。問題ありません..
ただし、doPMtest.sh スクリプトが終了し、startTests.sh スクリプトが Build testcover コマンドを開始すると、途中でそのデータが失われ、これらのメッセージが表示されます ...
..そしてどういうわけか私はデータを失います
Perl モジュールと Perl スクリプトのテストを組み合わせて、1 つのファイルで有効なコード カバレッジを得るにはどうすればよいですか?