【问题标题】:Automation project does not recognize and run feature file自动化项目无法识别和运行功能文件
【发布时间】:2020-05-06 21:09:01
【问题描述】:

目前我在 Visual Studio 中创建了一个单元测试项目,以使用 C#、Selenium Web Driver 和 SpecFlow 自动化我的测试。

在 BDD 中编写我的 .feature 文件并生成步骤定义后,在运行所有测试时,测试管理器无法识别它们,并且我在 IntelliSense 中出现以下错误。

[Failure] Could not find file 'C:\Users\peter01\source\repos\AutomatedTests\ExampleProject\UnitTest1.cs'.

我的项目已经配置了输出类型“类库”,我在创建项目时删除了UnitTest1.cs文件。

我需要测试项目来识别并运行我的 Login.feature 文件中的所有测试

我的项目只有一个功能文件“Login.feature”

Feature: Login  

    Scenario: Login Success
        Given i access website
        When do login with user
        | user    | password|
        | user123 | pass123 |
        Then show message

和 LoginStepDefinition.cs

    using Microsoft.VisualStudio.TestTools.UnitTesting;
    using OpenQA.Selenium;
    using OpenQA.Selenium.Chrome;
    using System;
    using TechTalk.SpecFlow;

    namespace ExampleNamespaceXXXX

        {
            [Binding]    

            public class LoginSteps
            {        
                [Given(@"i access website")]
                public void Example1()
                {
                    example line code
                }

                [When(@"do login with user")]
                public void Example2(Table table)
                {
                    try
                    {
                        example line code
                    }
                    catch (NoSuchElementException)
                    {
                        example line code
                    }
                }

                [Then(@"show message")]
                public void Example3()
                {
                    example line code
                }
            }
        }

【问题讨论】:

  • 顺便说一句,您使用的是哪个版本的 specflow?如果您尝试添加新的功能文件,您是否看到 .feature 文件(.feature.cs 文件)后面的代码?重新生成功能文件时出现问题。

标签: c# selenium unit-testing selenium-webdriver specflow


【解决方案1】:

如果你想让 VS 检测到你所有的测试,那么你需要使用测试适配器,

您可以通过不同的方式配置测试项目

  1. 如果您想使用 MStest 运行程序,请将 MSTest.TestAdapterMSTest.TestFramework 作为依赖项添加到您的项目中.

  2. 如果你想要 SpecRunner 然后将 SpecRun.Runner 包添加到 packages.config SpecFlow 项目的文件。您可能需要重新启动 Visual Studio 以查看您的测试。

更多参考可以通过官方链接:https://specflow.org/documentation/Troubleshooting-Visual-Studio-Integration/


在我的例子中,我使用 MSTest Adapter 和 SpecFlow 创建了一个测试项目来运行我的所有功能文件,如果您想尝试按照以下步骤操作:

  1. 创建 MSTest 类型的新项目。 VS to create new project

  2. 输入项目名称和位置以保存您的测试项目。

  3. 此时您将能够看到项目中的所有基本依赖项。 default dependencies
  4. 现在,只需添加 SpecFlowSpecFlow.Tools.MsBuild.Generation 通过 Nuget 包管理器依赖于您的项目范围,以便您的测试运行程序检测到并运行 您的所有功能文件。

现在所有的基本配置都完成了,你需要构建你的项目来运行你的测试项目。

【讨论】:

    【解决方案2】:

    错误消息表示 Visual Studio 正在引用磁盘上不存在的文件。您需要在解决方案资源管理器中右键单击该文件,然后选择“从项目中排除”。请务必在排除文件后“全部保存”。

    如果您在 Visual Studio 之外删除文件,就会发生这种情况。告诉 VS 包含哪些文件的 .csproj 文件不会得到更新,Visual Studio 试图编译一个不存在的文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-23
      • 2018-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多