解决方案中的多个Silverlight单元测试项目

时间:2010-04-17 22:08:41

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

我正在构建许多属于同一解决方案的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常规测试项目和基础结构时非常有用,因为我可以创建并执行从每个Test项目聚合的测试列表。但是使用Silverlight单元测试框架,因为Silverlight单元测试项目必须是“启动项目”,我无法想象如何一次性运行每个测试项目的测试集合。我必须分别运行每个,然后每次都切换启动项目。我宁愿避免创建复杂的构建脚本或构建定义 - 有没有办法一次运行所有测试?

-Thanks

2 个答案:

答案 0 :(得分:2)

我不知道您是否仍在为此寻找解决方案,但可以创建一个将在多个程序集中运行所有测试的项目。我刚创建了一个没有任何测试的项目,给它引用了所有其他测试程序集,然后将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")更改为可以匹配所有单元测试项目的方法,但是您可以运行一个项目,它将为您提供运行的所有不同程序集的良好树视图。 / p>

答案 1 :(得分:1)

是的,遗憾的是,如果没有测试列表的支持,那就不那么容易了。

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

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