1

Stack Overflow 的居民们,我来到你们面前,希望能解决我当前的问题,因为你们真正的知识源泉已经回答了我的许多问题。有没有一种简单的方法可以为已经创建的 ASP 网站项目创建单元测试,而无需安装需要您购买它们的软件,如果您希望继续使用它们?如果有办法让 ASP 网站目录被视为一个项目,那将非常顺利地解决问题。有两种方法可以实现这一点,它们可能仍然可行,但我已经放弃了:

  1. 将 ASP 网站项目链接到普通的 Visual Studio 项目。
  2. 我在网上看到的一种方法建议可以简单地将 ASP.Net 网站文件夹拖到一个普通的 VS 项目上,这将有效地使该项目成为 ASP 网站的副本,具有用于单元测试的网站的所有功能能够为单元测试项目使用添加引用非常容易,这比我在添加服务/Web 引用中遇到的要简单得多。类似地,有一个网站建议将 ASP 网站的所有内容添加到项目的根目录中。它们都不适合我,但我可能在解释说明时犯了错误。

一旦我放弃尝试让单元测试添加对 ASP 网站的引用,我的下一个方法是将 Web 引用链接到单元测试。起初我尝试将 ASP 网站的http://localhost(number)/放在 Web 参考 URL 中,但这没有用。我看到一些内容提到为单元测试创​​建一个 IIS 站点以供参考,但我无法理解它。

我一直在尝试创建一个 wsdl 文件,为此我下载了 WCF LOB Adapter 2013。我没有安装 BizTalk,并且在软件提供了 BizTalk 需要安装 BAM 的消息后,我决定反对下载更多软件。BizTalk 本身已经有大约 660 兆字节,而且对于整个 Windows 10 操作系统大小的五分之一来说,我认为 BizTalk 应该能够在不需要额外的专门软件的情况下运行。

我最近发现,当我尝试添加 Web 引用时,恰好出现了 .asmx 页面。我没有给我一个关于连接的错误,而是收到一个错误,原因是我在同一个解决方案中重复了 web.config 文件,这要归功于尝试了这么多不同的方法而没有成功并且没有清除它们。

我并没有真正研究过 MVC,因为我所阅读的教程并没有真正展示您如何使用 MVC 来测试我公司想要进行单元测试的各种 aspx 页面之一的现有代码。

我认为我在 [this][2] 教程上取得了成功,但是尝试运行我创建的 asmx 文件给了我“格式不正确”的错误,并且我的命令提示符不承认我是管理员,即使控制面板说我有管理员权限,这似乎是应用不同解决方法的一大障碍。但是,在多次使用“清洁解决方案”并从解决方案中删除其他项目后,我终于能够运行 asmx 文件了。但是,现在我被困在第二步的末尾,其中一个批处理文件 (.bat) 应该在 .asmx 页面的 Bin 文件夹中创建一个 .cs 文件。我已经到了 Visual Studio 开发人员命令提示符对 'wsdl' 和 'wsdl.exe' 都可以的地方不再给出:wsdl/wsdl.exe"

我的批处理文件的内容是:

wsdl /l:CS /n:WService /out:bin/wsdlWalkthrough.cs
http://localhost/webserv.asmx?wsdl

由于我正在尝试按照一篇文章的步骤进行操作,该文章的年龄足以让小学毕业,因此语法可能很容易发生变化。相反,现在我得到了错误:

'http:' 不是内部或外部命令、可运行程序或批处理文件。

我将把这个问题本身变成一个问题,因为这个问题是是否有一种平滑、简单、免费的方式来为 ASP.Net 网站设置单元测试,而不是专门回答我的任何问题,尽管我会非常感激地收到这些问题。

[另一个教程][3] 可能还为我提供了一个解决方案,但我不会屏住呼吸。

2016 年 2 月 29 日更新 在 Stack Overflow 非常有帮助的ChristiFati的帮助下,我能够通过Dimitrios Markatos 的 5 个简单步骤创建和使用 .NET Web 服务,可在http://www.sitepoint.com找到/net-web-services-5-steps-3/这篇文章可能已经有十多年的历史了,但它仍然是我在尝试找出添加引用的方法的一两周内遇到的最简单的方法,或者在这种情况下添加我遇到的 Web 引用。不过要注意两件事。第一个是如果你直接从教程中复制和粘贴代码,你最终可能会出错,因为你制作的批处理文件会有一个额外的换行符,这导致了我用来运行 .bat 的 VS2012 的开发人员命令提示符文件给我

'http:' 不是内部或外部命令、可运行程序或批处理文件。

错误。再次感谢ChristiFati为我指出这一点。同样,步骤 3 的说明为您提供了第二个 .bat 文件的以下代码:

csc /t:library /out:binGetSuppliers.dll binGetSuppliers.cs      
  /reference:System.dll,System.Data.dll,System.Web.dll, System.Web.Services.dll,System.XML.dll /optimize 

除了消除空格和换行符之外,上面的代码应该看起来更像:

csc /t:library /out:bin/GetSuppliers.dll bin\GetSuppliers.cs      
  /reference:System.dll,System.Data.dll,System.Web.dll, System.Web.Services.dll,System.XML.dll /optimize 

但除此之外,在我遇到所有死胡同之后,教程是上帝的礼物。我正在判断我的问题是否已回答,因为关键问题是能够为我的单元测试提供参考,无论是普通参考还是 Web 参考。我预计不会再遇到任何重大困难,希望我能够最终为我们的一个 ASP 网站进行单元测试。如果没有,这篇文章将被编辑以描述最新的问题。

好吧,这太荒谬了。我可以很好地添加 Web 引用,但这样做似乎已经完成了,因为能够在 ASP.NET 网站的任何地方引用不同的 .cs 页面。有没有人有办法让单元测试能够引用 ASP.NET 网站中的代码/类?

2016 年 3 月 8 日更新 将网站的所有功能放入 DLL 中有一个简单的解决方案。完成后,右键单击单元测试项目并选择添加引用。DLL 没有显示在任何选项卡上,但我可以通过单击浏览来选择适当的 DLL。

不过,如果有任何其他方法可以从不存在此类 DLL 的现有 ASP 网站设置单元测试。

我的 Visual Studio 2013 解决方案

[2]:http://www.sitepoint.com/net-web-services-5-steps-2/ [3]:https://msdn.microsoft.com/en-us/library/ms731835%28v=与 100%29. aspx

4

0 回答 0