尝试99个谜题来学习Haskell。我面临的一个生活质量问题是,每当我测试一个解决方案时,我都会编写一个函数:
mySolutionForQuestion12 :: someFunctionType
testMySolutionForQuestion12 :: IO ()
testMySolutionForQuestion12 = do
print "testMySolution"
print $ mySolutionForQuestion12 "myInput1"
print $ mySolutionForQuestion12 "myInput2"
putStr "\n"
main = do
-- neglected code to test solutions for question 1 up to 11 --
testMySolutionForQuestion12
...
-- instead I want to do something like --
callAllFunctionsInThisFileByNameBeginningWith "test"
-- , so that I only have to write one line of code instead of n lines --为了尽可能懒惰,我希望有一种方法让我的main自动调用以test文件中的4个确切字符开始的所有函数。
这在哈斯克尔有可能吗?来自Python的Python --一种动态语言--这是不言自明的,但对于C或C++来说,这需要很好的解决办法(我实际上不知道如何在这些语言中做到这一点)
因此,我想知道Haskellians (如果这是一个词)会怎么做?接近这个?在这方面是否有“最佳做法”?
发布于 2022-01-23 08:53:21
最佳实践是首先不要通过将值打印到IO来测试您的函数,而是让一个适当的单元测试库来测试它。除了恐龙HUnit之外,最成熟的是QuickCheck,它专注于使用随机性自动生成测试用例(但也可以用于硬编码输入)。它并没有真正解决您在这里询问的问题,但是已经为QuickCheck设计了许多方便的工具。我使用tasty作为调用测试的框架;它添加了有用的控制机制、命令行参数、统计信息等,但仍然需要在main例程中显式列出测试。(我个人认为这是一件好事!)
为了自动搜索源文件以进行测试并运行它们,您可以转而查看博士考试。
https://stackoverflow.com/questions/70820367
复制相似问题