簡體   English   中英

Cabal和HUnit的交互

[英]Cabal and HUnit interaction

我正在嘗試使用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 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

test/文件夾下的Main.hs文件中,我具有以下內容:

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),我不知道為什么我可以將這些測試相互集成?

問題在於AG.gammaTest類型的,因為TestCase :: Assertion -> Test

因此,使用功能testCase :: TestName -> Assertion -> Test ,HUnit提供了一種創建測試樹的方法,而test-framework提供了另一種創建測試樹的方法。

因此,您不能將HUnit.Test傳遞給testCase 但事實證明,您可以使用HUnit.Test 並將轉換test-framework測試(或更確切地說是它們的列表)。

使用test-framework模塊中的其他功能:

hUnitTestToTests :: HUnit.Test -> [TestFramework.Test]

(簽名增加以顯示模塊來自何處)。

請參閱此處以獲取更多詳細信息:

https://hackage.haskell.org/package/test-framework-hunit-0.3.0.2/docs/Test-Framework-Providers-HUnit.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM