問題タブ [htf]
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.
testing - カバール、HTF、およびHUnitアサーションの奇妙さ
だから私はHTFを使ってHUnitスタイルのアサーションを実行しようとしています
そして、私が使用するghc --make
と、それは正しく動作しているようです。
しかし、cabalを使用してビルドすると、失敗するはずのすべてのテストが失敗するわけではありません。
何が問題になっていますか?どうすれば修正できますか?
testing - HTFによるテスト
HTFに関する適切なドキュメントが信じられないほど不足しています。私が見つけたのは、次の本当に重要な情報のいずれも提供しないチュートリアルだけでした。
- パッケージからすべてのテストを自動的に実行するテストスイートを作成するにはどうすればよいですか?
- HTFのこれらの「ブラックボックステスト」とは正確には何ですか。また、どのように作成すればよいですか。
- HTF(ソースルート、パッケージとモジュールの構造、カバール)に基づいてテストスイートを設定する実際の基準は何ですか?
testing - Haskell Test Framework (HTF) と複数モジュールのテスト定義
HTF には、テスト フレームワークの使用方法を示すサンプル プロジェクトがあります。モジュール MyPkg.A はいくつかのテストを定義し、MyPkg.B はいくつかのテストを定義します。モジュール A と B からテストを集約する (そして新しいテスト自体を定義しない) 新しいモジュール MyPkg.C を作成することは可能ですか?
A と B (テスト ランナーのメイン モジュール) からテストをインポートする代わりに、単一の C モジュールからテストをインポートしたいと考えています。
このように MyPkg.C を実装します
そして、私のメインのテストランナーモジュールは次のようになります:
このコードをコンパイルしようとすると、エラーが発生します。
haskell - Cabal での HTF のインストールに関する問題
HTFをインストールしようとしています。ただし、これcabal install HTF
を取得した後:
他のバージョンをインストールしようとしましたが、別の問題が発生しました。たとえばcabal install 'HTF <= 0.1'
、次のようになります。
の後の最初の結果と同様の結果も得られますcabal install 'HTF <= 0.9'
。試しghc-pkg check
てみると、壊れたパッケージのリストが表示されました。パッケージを再インストールし、HTF のインストールを繰り返し試みましたが、結果は同じでした。
testing - Test.QuickCheck:同じタイプの複数のプロパティのテストを高速化
自分のタイプのインスタンスを生成するランダムジェネレーターをテストしています。そのために、私は次のカスタムインスタンスを持っていますArbitrary
:
これは、生成された値が特定のプロパティを保持していることをテストするためTest.QuickCheck
に(実際には)とうまく機能します。Test.Framework
ただし、確認したいプロパティはかなりあります。追加するほど、すべてのプロパティを確認するのに時間がかかります。
毎回新しく生成するのではなく、すべてのプロパティをテストするために同じ生成値を使用する方法はありますか?私は明らかに、失敗時にどのプロパティが保持されなかったかを確認したいので、1つの巨大なプロパティを作成することand
は最適ではありません。
haskell - HTF は TH によって生成された props をテストしません
ライブラリ内のさまざまなタイプに対して、同様のテストを多数実行したいと考えています。
簡単にするために、クラスを実装する多くのベクター型があり、ライブラリ内のすべての型で機能するNum
同じ QuickCheck プロパティ チェックを生成したいとします。prop_absNorm x y = abs x + abs y >= abs (x+y)
TH を使用してそのようなプロパティを生成します。
テストを生成する関数には、次の署名があります。
この関数は、ベクター クラスのすべてのインスタンスVectorMath (n::Nat) t
(および同時に のインスタンスNum
) を検索し、reify ''VectorMath
それに応じてすべての prop 関数を生成します。
-ddump-splices
次のようなものを示しています。
問題は、手動で作成されたプロパティはすべてチェックされますが、生成されたプロパティはチェックされないことです。
注 1: 同じファイルに生成されたプロパティと生成されていないプロパティがあります (つまり、TH 式$(..)
は他の props と同じファイルにあります)。
注 2: prop 関数を作成するための型のリストは可変です。後で の他のインスタンスを追加したいVectorMath
ので、テスト リストに自動的に追加されます。
問題は、HTF(おそらくTHも使用する)が生成されたコードを含むファイルではなく、元のファイルを解析することだと思いますが、なぜこれが起こるのかわかりません。
だから私の質問は: この問題を解決するにはどうすればよいですか? TH で生成された props を使用できない場合、さまざまなタイプで QuickCheck テストを実行できますか (つまり、それらを に代入しますprop_absNorm :: Vector 4 a -> Vector 4 a -> Bool
)?
また、別の方法として、TH をさらに使用して手動でテスト エントリを htf_Main に追加することもできますが、これを行う方法はまだわかりません。そして、それはきれいな解決策のようには見えません。
haskell - Cabal testsuite - How can I pass a flag?
I use cabal with test-suites. The processor I use (HTF) allows flags (e.g. --quiet
). How can I add such flags in the cabal file in order to be passed automatically to the test suite program when it is executed?