加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

actionscript-3 – 当单元测试依赖于其他单元时,如何进行模块化

发布时间:2020-12-15 01:47:52 所属栏目:百科 来源:网络整理
导读:我试图回顾性地测试一个相当复杂但利用MVC的应用程序.我知道回顾性地应用单元测试并不理想,但我仍然相信通过重构现有代码是可能的.大多数情况下,不依赖于其他单元即单元测试一个单元,即视图依赖于模型. 在这种情况下,单元测试的最佳方法是什么?使用真实模型
我试图回顾性地测试一个相当复杂但利用MVC的应用程序.我知道回顾性地应用单元测试并不理想,但我仍然相信通过重构现有代码是可能的.大多数情况下,不依赖于其他单元即单元测试一个单元,即视图依赖于模型.

在这种情况下,单元测试的最佳方法是什么?使用真实模型或创建模拟模型更好吗?

在我的情况下使用真实模型的问题是该模型依赖于从XML获取数据的其他响应类,因此存在一系列依赖.这个模型有很多数据,因此使用它会容易得多,但也许我错过了这一点.

为简洁起见,我提供了一个应用程序的UML.

**编辑****

好的,如果我是正确的,最好在mock类中创建模拟数据吗?例如,我有模拟类“MockPlaylistPanelModel”,它创建View类“PlaylistPanel”运行所需的数据,没有错误:

class MockPlaylistPanelModel extends Mock implements IPlaylistPanelModel
{
  /** 
   * Return all playlist items
   * @public 
   */
  public function get mainPlaylistItems():Vector.<PlaylistData> 
  {
    var playData:Vector.<PlaylistData> = new Vector.<PlaylistData>;
    var playlistResp:PlaylistData = new PlaylistData(0,"",0);
    playData.push(playlistResp);
    return playData;
   }

}

解决方法

要将单元测试回溯到现有应用程序中,您通常需要更改应用程序代码以支持单元测试(正如您提到的,您可能需要执行一些重构).当然,这里的风险是应用程序的更改引入了错误,如果没有进行一些测试,就无法防范这些错误.

因此,一种明智的方法是针对您的一些关键用例进行一些系统级测试.这是一种围绕您的应用程序的“测试脚手架”,这意味着您可以更安全地开始引入较低级别的测试,同时在修改应用程序以使其更易于测试时降低引入错误的风险.一旦到位,您就可以引入一个策略,开发人员必须在更改之前针对他们更改的任何代码编写测试 – 这允许您围绕应用程序有机地增加一组自动化测试.

我强烈建议掌握Working Effectively with Legacy Code – 这本优秀的书涵盖了将测试引入现有应用程序的各种有用技术,这些应用程序几乎没有自动化测试.

关于是否应该在模拟类中创建模拟数据以进行测试的问题,这是在注入对象的测试版本时可以采用的一种方法,但可能不是最好的.通过使用像Mockito这样的模拟框架,您可以轻松地创建具有明确定义的行为的模拟对象.在您的情况下,您可以使用Mockito创建模拟模型实现,然后将模拟模型注入依赖于它的任何对象.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读