Unit Test里的Data Test

本文介绍如何在Visual Studio的UnitTest中使用数据驱动测试方法,通过外部XML文件提供测试数据,减少代码重复并提高测试效率。

用VS自带的Unit Test测试一个方法时,若需要大量的输入参数,可以按照以下方法把参数放在一个文件(数据库也可)里,可以省去重复代码。

 

假设要测试的方法为:

右键这个方法,自动创建出unit test工程,这个大家都知道的,就不说了

 

创建的测试代码如下:

 

在菜单中选择Test下的Windows => Test View

 

在出现的Test View列表中选择要测试的方法,右键选择属性

 

点Data Connection String右边的小button,

 

我们可以选择其中任一种,这里我们选择xml,这个xml中描述了我们需要用到的数据

 

 

如果xml格式正确,可以预览出

我的xml如下:

 

一路OK下去,最后发现我们的测试方法上面增加了一段话:

 

DeploymentItem中指定了xml文件的路径,如果改变了xml的路径,也要在这里做相当的更改。

 

下面我们改一下测试方法的代码:

 

我们可以用TestContext.DataRow去访问测试数据中的字段。

在xml中我们的测试数据有三条,在run这个测试方法时,unit test会依次获取这三条记录并运行。我们的代码中只用写一次,挺帅的,哈哈

 

关于unit test的一些介绍,可以参见

http://msdn.microsoft.com/en-us/library/ms379625(VS.80).aspx

 

 

### Unit Test 框架概述 Unit test 框架的设计初衷源于 JUnit 的启发,旨在为开发者提供一种结构化的方式来验证代码的功能正确性[^2]。这类框架允许程序员通过编写小型、独立的测试函数来检验程序各个部分的行为是否符合预期。 #### Python 中 unittest 模块的应用实例 为了具体展示如何利用单元测试框架进行实践操作,在Python环境中可以通过`unittest`库实现对自定义函数`myfunc`的有效检测: ```python import unittest from mymodule import myfunc # 假定存在名为mymodule.py文件中的myfunc函数 class MyFuncTestCase(unittest.TestCase): def setUp(self): # 可选设置环境准备逻辑 pass def tearDown(self): # 测试结束后清理工作 pass def test_myfunc_returns_correct_result(self): result = myfunc(10, 5) self.assertEqual(result, expected_value) # 需要替换expected_value为你期望得到的结果 if __name__ == '__main__': unittest.main() ``` 上述脚本展示了创建继承自`unittest.TestCase`类的新类,并在其内部定义多个以`test_`开头的方法来进行具体的断言检查过程[^1]。 #### Ruby 下 Test::Unit 实现方式 对于Ruby语言而言,则可通过集成Test::Unit完成相似的任务配置。任何希望被执行为测试的部分都应当被放置在一个派生自`Test::Unit::TestCase`的子类别之下;同时,所有实际执行判断的操作均需置于名称带有`test_`前缀的过程之中[^3]。 ```ruby require 'test/unit' class ExampleTests < Test::Unit::TestCase def setup @example_data = "some initialization" end def teardown # 清理资源 end def test_example_functionality actual_output = example_method(@example_data) assert_equal(expected_output, actual_output) # 替换expected_output为目标值 end end ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值