在软件开发过程中,测试是一个不可或缺的环节。随着技术的发展,测试工具也在不断进步,为开发者提供了更有效、更高效的测试脚本编写方式。本文将探讨如何利用Visual Studio Team Services(VSTS)进行Windows和Web应用程序的测试管理。
VSTS是一个强大的项目管理工具,它能够帮助团队管理大型项目。为了使用VSTS,需要设置服务器、安装并维护所有用户的访问权限。如果用户位于远程位置,还需要打开防火墙以允许访问。
VSTS允许开发者将已经编写的多个测试聚合在一起,以便通过自动化测试代理执行,模拟多达一千个用户的负载测试。多个代理可以并行运行,以成倍增加负载。这个过程使得团队能够重用为各种测试类型启动的工作。
开发者可以基于各个代码模块的单元测试执行负载测试,以便在更早的阶段发现问题,节省时间,并学习如何编写更好的代码。
使用ASP.NET单元测试,可以测试ASP.NET网站的一部分类和方法。这通常与其他测试非常相似,因为可以在网站的App_Code目录中的类上使用代码生成。不幸的是,由于Visual Studio处理这些文件的方式不同,无法为页面类本身(在.aspx和.aspx.cs文件中定义的页面类)生成测试。
VSTS支持以下五种关键类型的测试:
以下是一个C#测试类的示例,它展示了如何使用VSTS进行单元测试。
using Microsoft.VisualStudio.QualityTools.UnitTesting.Framework;
using System;
namespace Test
{
[TestClass()]
public class LogonInfoTest
{
private TestContext testContextInstance;
public TestContext TestContext
{
get { return testContextInstance; }
set { testContextInstance = value; }
}
[TestInitialize()]
public void Initialize()
{
// TODO: Add test initialization code
}
[TestCleanup()]
public void Cleanup()
{
// TODO: Add test cleanup code
}
[TestMethod]
public void ChangePasswordTest()
{
// ...
}
}
}
测试初始化和清理方法分别用TestInitializeAttribute和TestCleanupAttribute装饰。在这些方法中,可以放置在每次测试之前或之后需要运行的任何额外代码。这意味着在每次执行ChangePasswordTest方法时,都会执行Initialize()和Cleanup()。
为了使用VSTS进行单元测试并解决HttpContext和Session相关的问题,应该按照以下步骤操作。以下伪代码强调了涉及的步骤:
private TestContext testContextInstance;
public TestContext TestContext
{
get { return testContextInstance; }
set { testContextInstance = value; }
}
[AspNetHostingPermissionAttribute(SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermissionAttribute(SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)]
public interface IRequiresSessionState { }
[TestInitialize]
public void TestInit()
{
HttpContext.Current = new HttpContext(new HttpRequest("", "http://localhost", ""), new HttpResponse(new System.IO.StringWriter()));
System.Web.SessionState.SessionStateUtility.AddHttpSessionStateToContext(HttpContext.Current, new HttpSessionStateContainer("", new SessionStateItemCollection(), new HttpStaticObjectsCollection(), 20000, true, HttpCookieMode.UseCookies, SessionStateMode.Off, false));
// Initialize your specific application custom Context Class.
// Initialize User object initialized
}
[TestMethod()]
[DeploymentItem("Application.Web.dll")]
public void LoadTest()
{
Test target = new Test();
TestProject1.ObjectName accessor = new TestProject1.ObjectName(target);
// write the test cases for the method.
}
在使用VSTS进行单元测试时,Web.config不受支持。因此,应该复制Web.config的所有内容(除了system.web),然后粘贴到App.config中。然后,将App.config放置在测试项目文件夹中。
使用System.Diagnostics.Debugger.Break();来调试应用程序。
void TestMethod()
{
System.Diagnostics.Debugger.Break();
// Some Statement
}