情况:
要在我们的ASP.NET MVC应用程序上运行集成测试,我们选择了Selenium的Web驱动程序。
问题:
使用Internet Explorer驱动程序从VS2015运行测试时,控制台会显示错误消息(请参见下面的屏幕截图)。 同时,浏览器打开和关闭。控制台冻结了。然后,Visual Studio显示StackOverflow异常消息:
一旦驱动程序在应用程序中尝试导航操作,测试就会崩溃。
[Test]
public void PerformNavigation()
{
Driver.Navigate().GoToUrl(GetAbsoluteUrl("/")); // <-- The test crashes here
}
但外部网址有效。
[Test]
public void PerformNavigation()
{
Driver.Navigate().GoToUrl("http://google.com"); // <-- This works
}
似乎永远重定向Web驱动程序,直到发生stackoverflow异常(HTTP 302)。
问题:
我无法在Google或SO上找到任何帮助。我们的问题非常具体,可能是问题的组合。
那么我该如何使这些集成测试工作呢?
或者至少:我如何在这个问题上进行更精确的诊断?
更新:
我最终发现我的控制器方法之前的注释干扰了我的测试。我们使用这些注释来检查用户权限(这里用户可以阅读或更新任务):
[AuthorizedFunctionalities(Functionalities = "Mission_R;Mission_CUD")]
但是我觉得很奇怪,这些测试无法使用这些注释。它们在调试模式下运行良好,但不是通过Web驱动程序。 我会尝试进一步调查。
答案 0 :(得分:0)
您可以尝试在测试开始时动态加载程序集(.dll),在C#代码中加载。 为此,您可以使用以下代码行:
Assembly.LoadFile($"{AppDomain.CurrentDomain.BaseDirectory}\\YourDLL.dll");
答案 1 :(得分:0)
我最终发现我的控制器方法之前的注释干扰了我的测试。我们使用这些注释来检查控制器方法之前的用户权限:
[AuthorizedFunctionalities(Functionalities = "MyFunctionalities")]
通过删除这些anotations,测试工作。我仍然需要知道为什么网络驱动程序不喜欢这些。