【问题标题】:Can I perform a unit test from a .NET application running in the cloud?我可以从在云中运行的 .NET 应用程序执行单元测试吗?
【发布时间】:2018-11-13 12:03:12
【问题描述】:

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

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

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

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 的类)

【问题讨论】:

  • 调用不在单元测试中的 REST API 严格来说不是单元测试。你想模拟你的依赖还是仅仅自动化你的常规测试并为此使用单元测试项目?

标签: c# asp.net .net visual-studio unit-testing


【解决方案1】:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-09
    • 2013-03-20
    • 2015-08-02
    • 1970-01-01
    相关资源
    最近更新 更多