【问题标题】:Multiple Silverlight Unit Test Projects in Solution解决方案中的多个 Silverlight 单元测试项目
【发布时间】:2010-04-17 22:08:41
【问题描述】:

我正在构建多个属于同一解决方案的 Silverlight 4.0 库。我喜欢将它们分成单独的项目,并为每个项目创建一个单元测试项目:

SolutionX
-LibraryProject1
---Class1.cs
---Class2.cs
-LibraryProject1.Test
---Tests1.cs
---Tests2.cs
-LibraryProject2
---Class1.cs
---Class2.cs
---CLass3.cs
-LibraryProject2.Test
---Tests1.cs
---Tests2.cs
---Tests3.cs
-LibraryProject3
---Class1.cs
-LibraryProject3.Test
---Tests1.cs

这在使用 VS 常规测试项目和基础架构时非常有用,因为我可以创建和执行从每个测试项目聚合的测试列表。但是对于 Silverlight 单元测试框架,因为 Silverlight 单元测试项目必须是“启动项目”,所以我无法弄清楚如何一次性从每个测试项目中运行一组测试。我必须分别运行每个然后每次切换启动项目。我宁愿避免创建复杂的构建脚本或构建定义——有没有办法一次运行所有测试?

-谢谢

【问题讨论】:

    标签: silverlight unit-testing silverlight-4.0 silverlight-toolkit


    【解决方案1】:

    我不知道您是否仍在为此寻找解决方案,但可以创建一个项目来运行多个程序集中的所有测试。我刚刚创建了一个没有任何测试的项目,给它一个对所有其他测试程序集的引用,然后将 Application_Startup 方法更改为类似的东西。

        private void Application_Startup(object sender, StartupEventArgs e)
        {
            UnitTestSettings settings = UnitTestSystem.CreateDefaultSettings();
            var testAssemblies = Deployment.Current.Parts.Where(p => p.Source.Contains("Tests")).ToList();
            foreach(var assembly in testAssemblies)
            {
                settings.TestAssemblies.Add(new AssemblyPart().Load(GetResourceStream(new Uri(assembly.Source, UriKind.Relative)).Stream));
            }
    
            RootVisual = UnitTestSystem.CreateTestPage(settings);
        }
    

    您需要将p.Source.Contains("Tests") 更改为可以匹配所有单元测试项目的某种方法,但随后您可以运行一个项目,它会为您提供已运行的所有不同程序集的漂亮树形视图。

    【讨论】:

      【解决方案2】:

      是的,不幸的是,如果没有测试列表支持,这并不容易。

      我建议将测试合并到一个 Silverlight 单元测试项目中,将不同的集合放入文件夹中。

      然后,您可以使用框架的标记表达式功能来选择您实际希望在运行时运行的测试。该功能在 2010 年 4 月新版 Silverlight Toolkit 中更易于使用。

      【讨论】:

      • 这就是我所怀疑的 - 我正在使用 4 月版本。我试图避免使用单个测试项目,因为我喜欢将测试项目和被测项目作为一对保持在一起——更好的分离——而不是一个测试所有内容的超级项目。这使得将来很难在另一个解决方案中重用或版本化特定的库项目。很高兴看到在未来的版本中集成到 VS 测试项目基础架构以获得测试列表支持。不过,感谢您迄今为止所做的工作 - 这对我们来说是一个很棒的 Silverlight 工具。
      猜你喜欢
      • 2016-04-27
      • 1970-01-01
      • 1970-01-01
      • 2011-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-03
      相关资源
      最近更新 更多