3

たとえば、次のようなテスト コードがあります。

import Data.Decimal
import Data.Ratio
import Data.Word
import Test.HUnit
import Control.Applicative

import Debug.Trace

import Test.QuickCheck
import qualified Test.QuickCheck.Property as P
import Test.Framework as TF (defaultMain, testGroup, Test)
import Test.Framework.Providers.HUnit
import Test.Framework.Providers.QuickCheck2 (testProperty)

…………

isEQ :: (Eq a, Show a) => a -> a -> P.Result
isEQ a b = if a == b
           then P.succeeded
           else P.failed {P.reason = show a ++ "\nis not equal to \n" ++ show b}

-- | "read" is the inverse of "show".
-- 
-- > read (show n) == n
prop_readShow :: Decimal -> P.Result
prop_readShow d =  isEQ (read (show d)) d

…………

tests = [
        testGroup "QuickCheck Data.Decimal" [
                testProperty "readShow"           prop_readShow,
                testProperty "readShowPrecision"  prop_readShowPrecision,
                testProperty "fromIntegerZero"    prop_fromIntegerZero, 

...................

test-framerowk のレポートは次のようになります

 dist/build/Main/Main -a2000   
QuickCheck Data.Decimal:
  readShow: [Failed]
Arguments exhausted after 0 tests
  readShowPrecision: [Failed]
Arguments exhausted after 0 tests
  fromIntegerZero: [Failed]

失敗の理由なしに。同じように見える HSpec テストはレポートに失敗の理由を出力しますが、テスト フレームワーク テストは出力しません。

4

2 に答える 2

2

ここで考えられる問題は、あまりにも多くの不適切なテスト ケースを見つけた後で QuickCheck が諦めてしまうことです。上げるtopt_maximum_unsuitable_generated_testsと、QuickCheck が許容可能なケースを見つける機会が増え、テストを終了できるようになります。

于 2013-09-22T02:11:39.000 に答える
0

これは別の問題でした。実際、test-framework-0.8にはバグhttps://github.com/batterseapower/test-framework/issues/34があるため、テストカウントの値(-パラメーター)が高いと失敗します。

テストフレームワークのバージョンを0.7に減らす必要があります。

于 2013-03-01T06:45:51.737 に答える