c# - 我可以从在云中运行的 .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 的类)
解决方案
1.) 如果你必须在云端进行测试,那不是单元测试,而是集成测试!对于集成测试,我推荐你 postman 和 postman runner ( newman )。您可以使用 JS 脚本在 postman 中定义您的休息调用来测试响应,您可以使用 CLI-Tool newman调用定义的测试来自动执行此操作。
2.) C# 中有两种可能性用于 Unit Test MS Test和NUnit。这是两者之间的比较矩阵,以确定哪个最匹配:
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);
}
}
推荐阅读
- mysql - 计算只有整数值mysql的行
- javascript - 如何使用 Webpack CLI 指定输出文件名?
- c++ - C/C++ 中是否有预定义的算术运算的 2D 点?
- pandas - 如何根据熊猫中的其他列添加新列?
- linux - 在各种操作系统中,为什么关闭 shell 窗口会中断在该 shell 中运行的代码?
- javascript - 为什么我的堆排序功能没有按预期工作?
- android - 如何为每个布局添加带有汉堡的工具栏?
- sapui5 - 将内容动态添加到 simpleForm 会导致列未对齐
- python - 熊猫没有更新所有行
- flutter - 在颤动中将新元素添加到另一个屏幕的列表中