UnitTest用于将项目添加到foreach中的列表

时间:2013-10-23 20:19:08

标签: c# unit-testing moq

我有一个这个(工作)代码我需要重构所以我可以单独测试(使用moq)是否将包添加到IList以及是否运行每个包LoadContexts和LoadModules。

private Package[] _getPackages()
    {
        string[] files = _directory.GetFiles(_moduleDirectory, "*.dll", SearchOption.AllDirectories);

        foreach (string file in files)
        {
            string relativePath = file.Substring(_baseDirectory.Count());
            Package package = new Package(relativePath);
            package.LoadContexts();
            package.LoadModules();
            if (package.Contexts.Count() > 0 && package.Modules.Count() > 0)
            {
                _packages.Add(package);
            }
        }

        return _packages.ToArray();
    }

我正在考虑使用IPackageList接口创建一个单独的PackageList类,并让此类处理添加和加载包。这样我就可以验证是否使用了这些方法,并对PackageList类进行单独的测试。

这是一个好方法还是有更好的模式来测试它?

1 个答案:

答案 0 :(得分:1)

我喜欢你提出的体系结构:它分离了从包本身以及包的使用者加载和管理包列表的顾虑。您将能够轻松地独立测试加载新软件包。

我要做的一个调整:不要只将它称为PackageList,因为该名称不能证明在新类中包装数据结构。将其命名为唤起逻辑目的的东西。也许PackageManager或PackageLoader,因为它似乎负责这些类型的职责。