問題タブ [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.
unit-testing - ファイル システムから Tasty `TestTree` を動的に生成する
Parsec
ライブラリを使用してファイル パーサーを作成しました。Tasty
パーサーが特定のファイルを正しく解析することを確認するために、テスト フレームワークを使用して高レベルの単体テストを作成したいと考えています。
次のディレクトリ構造に、適切にフォーマットされた 3 つのファイルがあります。
私はしたいと思います:
- すべてのファイルを取得する
path/to/files
- 各ファイルの内容を読み取る
testCase
ファイルのコンテンツが正常に解析されることを保証する for each ファイルを作成します- これを動的に実行して、後でファイルを追加し、コードを変更しないようにします
私は次のように構築することができました:
この構造は機能しますが、理想的ではありません。これは、 のtestSuite
実行時に生成される出力があまり説明的でないためです。
成功時:
失敗時:
この出力は、解析に失敗したすべてのファイルではなく、解析に失敗した最初のファイルのみを出力するため、理想的ではありません。また、エラーがあるかどうかに関係なく、どのファイルが正常に解析されているかもわかりません。
テストツリーを次のようにしたいと思います。
成功時:
失敗時:
TestTree
ファイルシステムから動的に整形式を作成しようとする私の試みは次のとおりです。
ご覧のとおり、このコードにはviaunsafePerformIO
を抽出する見苦しい呼び出しがあります。ファイル システムから派生した情報 (ファイル名) を構成内で使用する方法を理解できなかったため、この安全でない関数呼び出しを使用せざるを得ないと感じました。結果はモナドに閉じ込められました。TestTree
unsafePerformIO :: IO [TestTree] -> [TestTree]
testCase
[TestTree]
IO
この安全でない関数を使用するのは理想的ではないだけでなく、IO
アクションが実際には安全でないため、機能しません。次の例外が発生するため、テスト スイートは実行されません。
の型シグネチャが与えられた場合withResource
:
または呼び出しのパラメーターで入力を使用しないIO a -> TestTree
最後のパラメーターの型の関数を構築することは不可能であることがわかりました。フレームワーク作成者の詳細な説明を確認したにもかかわらず、おそらく to の使用方法を理解していない可能性があります。Tasty フレームワーク内に、目的を達成するためのより良い機能があるのではないでしょうか?withResource
IO a
TestName
testCase
testGroup
Tasty
withResources
TestTree
質問:
TestTree
必要な記述出力を持つファイル システムから動的に作成するにはどうすればよいですか?
haskell - Hspec を使用した HUnit テストの実行
仕様内で HUnit テストを実行したい:
上記のコードは機能しますが、次の見苦しい出力が生成されます。
toHit
すべてのテスト ケースにラベルを付けることができますか? このようなもの:
さらに良いのは、各toHit
ケースに番号を追加することです。いじりましたがTestList
、map TestLabel
役に立ちませんでした。
haskell - カバルとHUnitの相互作用
HUnit で記述された単純な単体テストを機能させようとしています。
テストを入れたモジュールの名前は「MyTests」です。
このモジュールは、cabal repl から完全に実行できます。
これらのテストを実行できるように Cabal と統合したいと考えていますcabal test
。
数時間のグーグル検索から、次のシーケンスを使用してアプリケーションをテストできるはずであることがわかりました。
.cabal ファイルに以下を挿入しました。
フォルダーの下のMain.hs
ファイルtest/
には、次のものがあります。
これは明らかにエラーを返します。
これまでに作成した HUnit テスト (これは MWE です) がとても気に入っていますが、これらのテストを相互に統合するにはどうすればよいでしょうか?
haskell - IO モナドを使った Haskell Unit テスト
ファイル I/O を実行するため、IO モナドを返す Haskell 関数の HUnit テストを作成しようとしています。これを行う方法はありますか?現在、Bool を返すだけのメソッドを作成しようとしていますが、それは私のテストになる可能性があります
しかし、それは私に次のエラーを与えます:
haskell - Cabal エラー: 少なくとも次の依存関係がありません:
HUnit を使用して Haskell/Cabal パッケージのテスト スイートを作成しようとしていますが、cabal テストを実行すると次のエラーが発生します。
hunit をインストールするために「cabal hunit」を実行しました。インストールされていることを確認するために、「ghc-pkg list HUnit」を実行しました。
cabal が適切に構成できないのはなぜですか?
私が試してみました:
build-depends を次のように指定して、グローバル (1.2.5.2) バージョンまたはローカル (1.3.1.1) バージョンのいずれかが cabal によって通知されるようにします。
[packagename].cabal ファイルに。
https://www.haskell.org/cabal/FAQ.html#runghc-setup-complains-of-missing-packagesにも気付きましたが、そこにある説明と Setup.hs がどのように関連しているかを理解していませんでした。
私の Setup.hs ファイルは、
Setup.hs ファイルに「import Test.HUnit」を追加しようとしました。
この Setup.hs で 'cabal test' を実行すると、同じエラーが発生します。
haskell - Travis CI とのスタック
私は最近、スタックでtravis CIを使用しようとしていますが、いくつかの問題が発生しています。
私の .travis.yml ファイルは、ここにある私のレポにあります: (スタック Web サイトのガイドを使用しました) 私の構成ファイルのスナップショットは次のとおりです。
テストを git にプッシュすると、テストの実行に失敗します。travis CI はリポジトリをビルドしようとしますが、ログを調べると、スタック コマンドが見つからないと表示されます。
ただし、構成ファイルで、スタックをインストールするように指定しました。
なぜこれが起こっているのかわかりませんが、助けていただければ幸いです。
haskell - Haskell HUnit の PutText
私は最近、HUnit テスト フレームワークを使用して、haskell で単体テストを実行しています。
PutText st を最初の引数として受け取るこの関数 PutText と runTestText に出会いました。
しかし、私はこれを使用する方法がわからないので、これを使用する方法を理解するのに助けが必要ですか?