首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Haskell测试框架(HTF)和多个模块中的测试定义

Haskell测试框架(HTF)和多个模块中的测试定义
EN

Stack Overflow用户
提问于 2012-12-27 02:06:55
回答 1查看 444关注 0票数 4

HTF提供了sample project,它展示了如何使用测试框架。模块MyPkg.A定义了一些测试,MyPkg.B定义了一些测试。有没有可能编写新的模块MyPkg.C,它聚合了模块A和B的测试(而不定义新的测试本身)?

我希望从单个C模块导入测试,而不是从A和B导入测试(在我的测试运行器主模块中)。

我像这样实现MyPkg.C

代码语言:javascript
运行
复制
{-# OPTIONS_GHC -F -pgmF htfpp #-}
module MyPkg.C (htf_importedTests) where

import Test.Framework
import {-@ HTF_TESTS @-} MyPkg.A
import {-@ HTF_TESTS @-} MyPkg.B

我的主要测试运行器模块如下所示:

代码语言:javascript
运行
复制
{-# OPTIONS_GHC -F -pgmF htfpp #-}
module Main where

import Test.Framework
import Test.Framework.BlackBoxTest
import {-@ HTF_TESTS @-} MyPkg.C

main = htfMain htf_importedTests

当我试图编译这段代码时,我得到一个错误:

代码语言:javascript
运行
复制
TestMain.hs:23:5:
Not in scope: `htf_MyPkg_C_thisModulesTests'
Perhaps you meant `htf_Main_thisModulesTests'
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-27 07:05:46

HTF似乎不直接支持这种操作模式。然而,你可以通过一些技巧来实现这个目标:

A.hs

代码语言:javascript
运行
复制
{-# OPTIONS_GHC -F -pgmF htfpp #-}
module A where
import Test.Framework

funA :: Int -> Int
funA x = x + 1

test_funA = assertEqual (funA 41) 42

B.hs

代码语言:javascript
运行
复制
{-# OPTIONS_GHC -F -pgmF htfpp #-}
module B where
import Test.Framework

funB :: Int -> Int
funB x = x + 1

test_funB = assertEqual (funB 41) 42

C.hs

代码语言:javascript
运行
复制
module C where
import Test.Framework.TestManager

import A  
import B

htf_C_thisModulesTests =
   makeAnonTestSuite $ map testSuiteAsTest                  
     [ htf_A_thisModulesTests
     , htf_B_thisModulesTests
     ]

TestMain.hs

代码语言:javascript
运行
复制
{-# OPTIONS_GHC -F -pgmF htfpp #-}
module TestMain where
import Test.Framework
import {-@ HTF_TESTS @-} C

main = htfMain htf_importedTests

我认为一个好主意是引入一个新的delegate_测试定义语句,允许您将一个测试委托给另一个TestableHTF,这样我们就可以将htf_importedTests作为单个测试导出。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14044356

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档