首页 > 解决方案 > 我可以从在云中运行的 .NET 应用程序执行单元测试吗?

问题描述

我是.NET的新手(我来自 Java 和 Spring 框架),直到现在我从未在云上工作过。

目前,我开始着手在 Azure 中部署一个新的 .NET 项目。我知道我可以使用Cloud Explorer视图从 Visual Studio 调试它,但我对如何在云中执行单元测试存有疑问。

我试着用一个例子更好地解释。在我的项目中,我有这个控制器类:

namespace MyProject.Controllers
{
    /**
     *  Classe controller che implementa le operazioni per protocollare una mail
     */
    public class MailProtocolloController : ApiController
    {

        private String urlBaseProtocolloApi = "http://myserver.westeurope.cloudapp.azure.com:8081/myApi";

        public void getAooList()
        {
            string jsonRequest = urlBaseProtocolloApi + "/api/myresource/GetDepartmentsList";

            CredentialCache credCache = new CredentialCache();
            credCache.Add(new Uri(jsonRequest), "NTLM", CredentialCache.DefaultNetworkCredentials);

            HttpWebRequest spRequest = (HttpWebRequest)HttpWebRequest.Create(jsonRequest);
            spRequest.Credentials = credCache;
            spRequest.UserAgent = "Mozilla/4.0+(compatible;+MSIE+5.01;+Windows+NT+5.0";
            spRequest.Method = "GET";
            spRequest.Accept = "application/json;odata=verbose";

            HttpWebResponse endpointResponse = (HttpWebResponse)spRequest.GetResponse();
            string sResult;


        }

    }
}

好的,我知道目前这个 API 没有返回任何内容(无效),它仍处于萌芽状态,我必须对其进行更改。

目前我唯一想做的就是使用单元测试来检查sResult属性是否包含结果。

问题:

1)要执行我的应用程序,它必须部署在云中(因为这个 API 调用一个必须在同一环境中的 REST API,事实上我正在使用CredentialCache类附加凭证。我可以在云上部署这个应用程序吗并从这里执行我的单元测试?(类似于使用Cloud Explorer视图在云中执行调试。

2) 我该怎么做才能在 .NET 项目中创建单元测试?(在 Java 中,我只是创建一个导入 JUnit 的类)

标签: c#asp.net.netvisual-studiounit-testing

解决方案


1.) 如果你必须在云端进行测试,那不是单元测试,而是集成测试!对于集成测试,我推荐你 postman 和 postman runner ( newman )。您可以使用 JS 脚本在 postman 中定义您的休息调用来测试响应,您可以使用 CLI-Tool newman调用定义的测试来自动执行此操作。

2.) C# 中有两种可能性用于 Unit Test MS TestNUnit。这是两者之间的比较矩阵,以确定哪个最匹配:
http
: //www.anarsolutions.com/automated-unit-testing-tools-comparison/ 如果你想要类似于 JUnit 的东西,我认为 NUint 最适合你:

NUnit 是 Microsoft .NET 的开源单元测试框架。它的用途与 JUnit 在 Java 世界中的用途相同

例如,对于 MS Test,您必须添加 MSTest Nuget 包,使用注释定义您的类,然后使用注释定义您[TestClass]的测试方法,[TestMethod]然后您可以Assert在测试方法中使用命令,即

[TestClass]
public class MyTestClass
{
  [TestMethod]
  public void MyTest_Successful()
  {
    Assert.IsTrue(/*Something true*/ true);
  }
}

推荐阅读