如何在Scala单个测试用例中同时测试输出Map与List的方法
合并Scala测试用例的实现方案
直接将两个测试方法的逻辑整合到同一个test块中即可,一次性执行两个方法的测试。以下是修改后的代码:
test("test map and list methods together") { // 测试输出Map类型的方法 val mapTestCases: Map[String, Map[String, Int]] = Map( "Andorra" -> Map("la massana" -> 7211) ) for ((input, expectedOutput) <- mapTestCases) { val computedOutput: mutable.Map[String, Int] = PaleBlueDot.cityPopulations(countriesFile, citiesFilename, input, "04") assert(computedOutput == expectedOutput, s"Map方法测试失败:$input -> 实际输出:$computedOutput") } // 测试输出List类型的方法 val listTestCases: Map[String, List[String]] = Map( "Andorra" -> List("les escaldes") ) for ((input, expectedOutput) <- listTestCases) { val computedOutput: List[String] = PaleBlueDot.aboveAverageCities(countriesFile, citiesFilename, input) assert(computedOutput.sorted == expectedOutput.sorted, s"List方法测试失败:$input -> 实际输出:$computedOutput") } }
关键说明
- 给合并后的测试单元起一个清晰的名称,便于识别测试范围
- 保留两个方法各自的测试用例和断言逻辑,仅将它们放在同一个
test块内执行 - 优化断言的错误提示,失败时能快速定位是哪个方法出了问题
- 将原代码中的
var替换为val,符合Scala不可变变量的最佳实践
内容的提问来源于stack exchange,提问作者siraat mustafa
相关产品推荐
相关产品推荐

