我使用WP7Test nuget包来启动我的测试。 我有两个测试,用于登录和付款操作。我需要启动登录测试并保存会话。然后我需要启动付款测试。据我所知,默认测试以随机顺序运行。
有没有办法强迫他们按我的顺序运行?
答案 0 :(得分:1)
我不相信。按照设计,UnitTest意味着并行运行(或在您的情况下随机运行)。这是因为系统希望对每个UT进行沙箱处理,以防止您尝试做的事情(其他单元测试会影响系统的状态)。
我的建议是拥有一个帮助“登录”功能,您的登录和付款UT都会调用。这基本上应该是您在登录测试中已经存在的逻辑,减去断言调用。
答案 1 :(得分:0)
不幸的是,WP7Test(如果内存正确地为我服务)实际上只是用于单元测试。
单元测试旨在设计绝对最小的代码片段,而不是读取或写入外部源代码的任何内容。 (在您的案例会话中)有许多类型的测试适合该情况功能,并且会想到集成测试......
您可以按顺序在一次测试中编写一个测试覆盖两个函数,但同样不是单元测试......
对于快速集成测试,您可以简单地执行此操作...(人们会对此感到畏缩,但它会满足您的需求)
[TestMethod]
private void FunctionalityBeingTested_ConditionBeingTested_ExpectedOutput()
{
//input used by your first method
//Method that writes to your session
//input used by your second method
var session = //Method that reads from your session
//whatever assertions are appropriate for your expected results...
//what you expect your results to be...
Assert.IsNotNull(session);
Assert.IsEqual(expected, session);
}
再次,这不是单元测试,它是一个集成或功能测试,具体取决于范围。您在实施中测试的不仅仅是一个步骤,您应该对所有可能的内容进行单元测试,但是当您处理直接控制应用之外的任何事情时,它就不再是单元测试。
我强烈建议如果你还没有,你应该考虑使用Dependency Injection来测试Windows Phone应用程序。我自己就是一名Windows Phone开发人员,可以说正确的测试就像没有它的拔牙一样。 (Interfaces,Fakes,Moqs等是测试的绝佳工具)