gpt4 book ai didi

c# - Visual Studio 2010 中 Web 服务的远程单元测试

转载 作者:行者123 更新时间:2023-11-30 12:15:17 24 4
gpt4 key购买 nike

我需要将我的单元测试从本地测试更改为远程测试,到目前为止我认为我所要做的就是将 UrlToTest 更改为指向另一台服务器......但是 VS 一直坚持创建一个开发 Web 服务器而不是使用已经在运行的那个。

所以在阅读了一些文档之后,我的问题实际上是我是否在远程和本地计算机上都安装了测试 Controller 和测试代理或者什么?如果 WebService 在 Linux 上怎么办...

请注意,我不想调试我正在测试的应用程序。我只是想对已经在运行、已部署的 WebService 执行测试。

我可能应该提到我所有的测试都包含 WebService 调用和一些检查,如下所示:

    [TestMethod()]
[HostType("ASP.NET")]
[AspNetDevelopmentServerHost("MainProjectName", "/")]
[UrlToTest("http://servername:port/websitename/TestingOnlyWebForm.aspx")]
public void LoginEmptyDataTest()
{
IUserService userService = CreateIUserService();
string email = "";
string password = "";
ReturnMessage<User> actual;
actual = userService.Login(email, password);
Assert.AreNotEqual(true, actual.Status);
Assert.AreNotEqual("db_error", actual.Info);
}

但我也有更复杂的测试,其中我更改了一些数据并将其发送到另一个 WebService 等等。

请注意,UrlToTest 之前指向本地主机,此时它可以工作,但启动了一个开发人员服务器,这不是我想要的。

最佳答案

您尝试的是不可能的。所有生成的单元测试试图做的是在机器上本地运行测试,通过指定 AspNetDevelopmentServerHost 使用开发服务器,或者在 AspNetDevelopmentServerHost 不存在时使用 local IIS。

如果您想测试远程服务,请右键单击您的单元测试项目并添加服务引用。指向你的服务,给它一个命名空间,比如服务,然后生成代理。生成代理后,只需实例化它们并调用方法。还要从测试中删除所有不需要的属性。您的测试应该大致如下所示:

     [TestMethod]
public void LoginEmptyDataTest()
{
using (var userServiceClient = new Services.UserServiceClient(
"BasicHttpBinding_IUserService",
"http://someremotehost/userservice.svc"))
{
var result = userServiceClient.Login("user", "password");

// asserts go here
}
}

这可能会解决您眼前的问题,但是您应该像@eglasius 所说的那样重新考虑您在做什么。如果您调用的代码在内部更改状态会怎样?下一个测试可能因此而失败,因此您需要清理策略,否则您的测试将非常脆弱,您最终会忽略它们。

更新:在运行时传递一个地址。将第一个参数更改为您在配置文件中的任何 enpoint 配置名称。

关于c# - Visual Studio 2010 中 Web 服务的远程单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7715752/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com