elT*_*oro 5 unit-testing x++ axapta dynamics-ax-2012 dynamics-ax-2012-r3
Dynamics AX 2012附带单元测试支持.
要进行有意义的测试,需要提供一些测试数据(存储在数据库中的表中).
为了获得单元测试的可重现结果,我们需要在每次运行测试时将相同的数据存储在表中.现在的问题是,我们怎样才能做到这一点?
我了解到有可能将TestSuite的隔离级别设置为SysTestSuiteCompanyIsolateClass.这将创建一个空公司,并在测试运行后删除公司.在setup()方法中,我可以使用insert语句将我的testdata填充到表中.这适用于小场景,但如果你有一个真实的项目,它会很快变得很麻烦.
我想知道是否有任何人在实际场景中如何使用X ++单元测试框架的实用解决方案.任何输入都非常感谢.
我同意在一个新的空公司中创建测试数据只适用于您自己实现整个数据结构的相当简单的场景或场景.但是,只要需要现有的数据结构,这种方法就会变得非常耗时.
过去一种适合我的方法是在现有公司中运行单元测试,该公司已经拥有运行测试所需的大部分配置数据(例如财务设置,库存设置......).测试本身在运行ttsBegin- ttsAbort块,使得单元测试实际上不产生任何数据.
另一种方法是实现与测试无关的数据提供程序方法,但创建通常用于单元测试的数据(例如,创建产品的方法).创建一组有用的数据提供程序方法需要一些时间,但一旦存在,编写单元测试就会快得多.请参阅SysTest第V部分:测试执行(结果,运行者和监听器),了解Microsoft如何使用类似方法(或者至少他们曾在2007年用于AX 4.0).
这两种方法也可以组合使用,您可以调用ttsBegin- ttsAbort块内的数据提供程序方法,仅为单元测试创建所需的数据.
另一个有用的方法是使用doInsert或doUpdate创建测试数据,特别是如果您只对几个字段感兴趣而不需要创建完全有效的记录.
小智 3
好吧,从我的角度来看,您将无法利用比标准框架中指出的更多的东西。您可以做的更多是围绕发布管理。您可以使用目标数据设置集成环境,并在构建过程结束时将 nightbuild 模型推送到此环境中,然后运行测试。是的,它需要更多的努力来设置和维护,但这是我迄今为止看到的唯一拥有大量一致的数据来运行单元或集成测试的解决方案。
| 归档时间: |
|
| 查看次数: |
2246 次 |
| 最近记录: |