問題タブ [hunit]

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.

0 投票する
1 に答える
140 参照

haskell - アサーションエラーでHUnitに改行を出力するにはどうすればよいですか?

私のHUnitテストのいくつかは、かなり大きな構造をと比較しますassertEqual。HUnitは文字列を1行に出力するため、これらのエラーを見つけるのは困難です。私がやりたいのはText.Groom、これらの構造をきれいに印刷するために使用することですが、文字列を改行に渡すと、assertEqual改行が表示される\nため、出力がさらに読みにくくなります。

特に、 HUnitを作成するにassertEqualは、手入れの行き届いた文字列を改行で印刷するにはどうすればよいですか?

0 投票する
1 に答える
411 参照

haskell - IO以外のモナドでHUnitをテストフレームワークで使用することは可能ですか?

現在、次のテストコードがあります。

これはちょっとうまくいきますが、面倒です。テスト中のさまざまなものを返さなくても何かを書くことができ、代わりにそれらが意味を成すアサーションを持つことができればよいのです。

クラスがあるAssertableようですが、おそらくたくさんのものを再発明する必要があるようです。

0 投票する
2 に答える
4426 参照

unit-testing - Haskell でエラーをテストするにはどうすればよいですか?

関数が無効な値を受け取ったときにエラーをスローするようにしたいと考えています。たとえば、正の数のみを返す関数 pos があるとします。

これは単純な例ですが、理解していただければ幸いです。

エラーが予想されるテスト ケースを記述し、それを合格テストと見なしたいと考えています。例えば:

【私の解決策】

これは、@hammarのコメントに基づいて最終的に行ったものです。

0 投票する
1 に答える
3213 参照

haskell - テストを含む完全な Haskell スタックの作成

Haskell は初めてで、テスト対象のプログラムを構築しようとしています。HUnit と Cabal を使用することにしました。

私が見たものから、よく構造化されたプロジェクトは次のようになります。

私にとって謎の部分は、TestRunner.hs と AppName.cabal です。

testsuite/tests ディレクトリとサブディレクトリの下ですべてのテストを実行するテストランナーはどのようになりますか? どうすればカバルと統合できますか?

また、ハックの依存関係を AppName.cabal に入れ、コマンド ラインからビルドするにはどうすればよいでしょうか?

テストと依存関係を使用してゼロからアプリケーションを構築する完全な例を見つけるのに苦労しています。

ありがとう

0 投票する
1 に答える
287 参照

haskell - HUnit での ErrorCall の Haskell 単体テスト

私は機能を持っています:

場合によっては、次のerror関数で例外をスローします。

私はTest.HUnit単体テストに使用していますが、これらのエラーが特定の入力でスローされることを主張するテスト ケースを作成したいと考えています。のインスタンスである例外をテストする方法を提供するthisを見つけましたEqが、 のインスタンスではない例外error与えるように見えるため、エラーが発生します。ErrorCallEq

TestCase呼び出されたことをアサートしerror、(できれば) メッセージをチェックするa を作成するにはどうすればよいですか?

0 投票する
1 に答える
191 参照

haskell - ファイル依存テストによる HUnit テスト

レクサーがあり、既知の適切なテスト ケースのセットに対してテストしたいと考えています。これらはサブディレクトリ./test_src/に保持され、それぞれに拡張子testname .txtが付いています

私がやりたいことは、関連するすべてのテストケースへのパスを取得することです:

HUnit TestCases を含む HUnit TestList を作成し、それぞれの行に沿って関数を介して作成されたアサーションを使用します。

の線に沿った何か

私のアプローチで失敗しているように見えるのは、これには最初に次の関数が必要であり、次にその結果をマッピングするように思われることです:

IOモナドをエスケープする必要があるように見えるため、私が従っているアプローチは不可能であると強く疑っています。

  1. このアプローチは実行可能ですか?もしそうなら、何が欠けていますか?
  2. そうでない場合、この問題をどのように解決しますか? すべてのテストケースでハードコーディングを避けることはかなり一般的です
0 投票する
1 に答える
70 参照

unit-testing - HUnit テストが失敗する原因となるエラーの伝播

function の HUnit テストを書いていますeval :: Wff -> Assignment -> Maybe BoolWffブール式の単純化されたサブセットの抽象解析ツリーであるカスタム データ型です。

およびAssignmentは、 a の各変数にブール値を与える連想リストの型エイリアスですWff

私の現在のテストは次のようになります。

構築された両方のテストに合格します。ただし、このテストはあまり堅牢ではありません。のより複雑な値を変更してタイプミスをすると、 が aではなくa を返すためwffStr、パターンRight wffは失敗します。これにより、テストの実行が中止され、いくつかの悪いテストで失敗し、残りの実際の結果が得られます。現在の構造を変更して、エラーが伝播し、すべてを中止するのではなく、テストが失敗するようにするにはどうすればよいですか?parseLeft StringRigth Wff

0 投票する
2 に答える
480 参照

haskell - Haskell - 関数が呼び出されたことをアサートする

関数が Haskell HSpec で呼び出されたことを確認することは可能ですか?

データを変換する2 つの関数foobarがあると仮定します。

そして 、2 番目の引数として「f」または「b」を受け取ったかどうかに応じて、スタッフにfooまたはbarを適用し、適用された関数の結果を返す関数があります。

そして、私のテストでは、各関数 foo と bar を包括的にテストしましたが、その影響をapplyでテストしたくありません。

関数 foo または bar が呼び出されたことを確認することはできますか? 適用するために渡される引数に応じて?

0 投票する
0 に答える
178 参照

haskell - Cabal サンドボックス内の HUnit テスト

問題が発生した後、簡単なスタブ テストを実行するように Cabal プロジェクトを構成することができましたTrue @=? True。1 つの値をテスト済みパッケージの定数に置き換えても、まだ機能します。ただし、テストするカスタム データ型のインスタンスを作成しようとすると、リンク エラーが発生します。

今のところ、プロジェクトは 2 つのモジュールで構成されています。

testShowがコメントアウトされると、すべて問題ありませんが、コメントを外すと、次のようになります。

testShowリストでまだコメントアウトされている場合でも、エラーが発生しtestModuleます。package.cabal次のようになります。

ファイルはすべて次の場所にあります。