测试未出现在Visual Studio测试资源管理器中

6

我在设置测试时遇到了问题。我尝试使用一个控制台C#文件作为我的Selenium测试,虽然测试可以运行,但它没有出现在测试资源管理器中。当我创建一个单元测试C#项目时,它无法运行或显示在测试资源管理器中。我做错了什么?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace SeleniumTests1
{
    [TestClass]
    class SeleniumTest
    {
        [TestMethod]
        static void Main(string[] args)
        {

            IWebDriver driver = new FirefoxDriver();
            driver.Navigate().GoToUrl("http://www.bing.com/");
            driver.Manage().Window.Maximize();

            IWebElement searchInput = driver.FindElement(By.Id("sb_form_q"));
            searchInput.SendKeys("Hello World");
            searchInput.SendKeys(Keys.Enter);

            searchInput = driver.FindElement(By.Id("sb_form_q"));
            string actualvalue = searchInput.GetAttribute("value");

            Assert.AreEqual(actualvalue, "Hello World");
            driver.Close();
        }
    }
}

你的测试方法通常应该在命名约定中引用它们正在测试的逻辑,例如testHelloWorldOnBing()等。然后每个测试类应该在一个测试项目中,可以单独运行。 - ManoDestra
4个回答

13

这可能有效。我认为您的 TestMethod 需要是 public 并且非静态的,才能在测试资源管理器中显示。

namespace SeleniumTests1
{
    [TestClass]
    public class SeleniumTest
    {
        [TestMethod]
        public void Main()
        {

每个开发者都应该在自己内部找不到解决方案的情况下,谷歌一下。我曾经花费了2个小时试图弄清楚为什么,然后谷歌了一下,嘿,问题解决了。默认情况下,VS创建的文件没有公共声明。 - undefined

1
你是把Main方法当做测试方法吗? 应该创建一个单独的测试项目,然后引用需要测试的项目,并将代码移至测试项目中,例如:
namespace Tests
{
    [TestClass]
    public class MyProjTests
    {
        [TestMethod]
        public void Test{
            //your code
        }
    }
}

所以我创建了一个控制台 C# 项目。在该项目中,我创建了一个新的 C# 测试项目,然后将主方法引用到测试中?如果我听起来很蠢,请原谅。 - Peter
你需要创建一个控制台应用程序,然后在该解决方案中创建另一个项目,即测试项目(右键单击解决方案>添加>新建项目>测试>单元测试,然后在该项目内右键单击引用并从窗口中选择解决方案,你将看到控制台应用程序的名称,请单击它,在单元测试类的顶部添加一个using语句,这样你就可以开始进行单元测试了。 - LukeChristopher
当我说控制台应用程序时,我只是指的是您可能要测试的某个示例,在您的情况下,它将是您希望测试的代码所在的位置的引用。 - LukeChristopher

1
尽管这是一个相当明显和直接的答案,但是,通过查看Peter最初发布的代码和我的愚蠢错误,我意识到我们可能会犯另一个错误的地方是没有使我们的外部测试类公开,否则它们将默认为内部类,包含的测试将不会显示在测试资源管理器中。因此,单元测试代码的最终形式应该以以下方式开始。
namespace SeleniumTests1
{
  [TestClass]
  public class SeleniumTest
  {
    [TestMethod]
    public void testMethod(string[] args)
    {

0

我认为我可能已经成功解决了这个问题,在这种情况下,我从Selenium网站的net40文件中导入了4个dll文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接