1

我正在构建许多属于同一解决方案的 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 单元测试项目必须是“启动项目”,所以我无法弄清楚如何一次性从每个测试项目运行一组测试。我必须分别运行每个然后每次切换启动项目。我宁愿避免创建复杂的构建脚本或构建定义——有没有办法一次运行所有测试?

-谢谢

4

2 回答 2

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")为可以匹配所有单元测试项目的某种方法,但是您可以运行一个项目,它将为您提供运行的所有不同程序集的漂亮树视图。

于 2010-08-19T20:53:48.727 回答
1

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

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

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

于 2010-04-17T22:39:27.853 回答