1

HUnit で記述された単純な単体テストを機能させようとしています。

テストを入れたモジュールの名前は「MyTests」です。

module MyTests where
import qualified Test.HUnit    as H
gamma = H.TestCase (H.assertEqual "foo" 1 1)
-- Run the tests from the REPL
runTestTT $ H.TestList [H.TestLabel "foo" gamma]

このモジュールは、cabal repl から完全に実行できます。

λ> run
Cases: 1  Tried: 1  Errors: 0  Failures: 0
Counts {cases = 1, tried = 1, errors = 0, failures = 0}

これらのテストを実行できるように Cabal と統合したいと考えていますcabal test

数時間のグーグル検索から、次のシーケンスを使用してアプリケーションをテストできるはずであることがわかりました。

cabal configure --enable-tests && cabal build tests && cabal test

.cabal ファイルに以下を挿入しました。

Test-Suite tests
    type:           exitcode-stdio-1.0
    main-is:        Main.hs
    hs-source-dirs: test src
    test-module:    YourTestModule
    build-depends:  base
                  , HUnit
                  , Cabal
                  , QuickCheck
                  , test-framework
                  , test-framework-hunit
                  , test-framework-quickcheck2

フォルダーの下のMain.hsファイルtest/には、次のものがあります。

module Main where

import Test.Framework (defaultMain, testGroup)
import Test.Framework.Providers.HUnit
import Test.Framework.Providers.QuickCheck2 (testProperty)

import Test.QuickCheck
import Test.HUnit

import Data.List

import qualified MyTests as AG


main = defaultMain tests

tests = [
        testGroup "Some group" [
                testCase "foo" AG.gamma        
            ]
    ]

これは明らかにエラーを返します。

test/Main.hs:19:32:
    Couldn't match type ‘Test’ with ‘IO ()’
    Expected type: Assertion
      Actual type: Test
    In the second argument of ‘testCase’, namely ‘AG.gamma’
    In the expression: testCase "foo" AG.gamma

これまでに作成した HUnit テスト (これは MWE です) がとても気に入っていますが、これらのテストを相互に統合するにはどうすればよいでしょうか?

4

1 に答える 1