Intellij IDEA 中的 JUnit 错误 "test framework quit unexpectedly"

JUnit error "test framework quit unexpectedly" in Intelij IDEA

我从不同方面调查了这个问题,但到目前为止没有任何进展。我有一个项目,运行s JUnit 上的 selenium 驱动程序使用 Cucumber for Java。我使用 Maven。 这是我的 TestRunner 运行 测试:

package com.task.lab;

import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;
import org.junit.runner.RunWith;

@RunWith(Cucumber.class)
@CucumberOptions(features = "C:\Users\admin\IdeaProjects\bddtesting\src\test\java\com\task\lab\features",
        glue = "C:\Users\admin\IdeaProjects\bddtesting\src\test\java\com\task\lab\steps")
public class TestRunner {
}

这是功能文件:

Feature: Login to Gmail

 Scenario Outline: login compose and delete letter
    Given: User is on SignIn page
    When: User enters <Email> and <Password>
    Then: User sends letter to <Receiver> and alert is displayed letter is sent
Examples:
  |Email                 |Password   |Receiver
  |testaccount@gmail.com |okokokokok |testtest@gmail.com
  |testaccount@gmail.com |okokokokok |testtest@gmail.com

pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
     http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.task.lab.bddtesting</groupId>
<artifactId>bddtesting</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
    <plugins>
        <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.7.0</version>
        <configuration>
            <source>1.7</source>
            <target>1.7</target>
        </configuration>
    </plugin>
    </plugins>
</build>
<dependencies>
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-support</artifactId>
        <version>3.8.1</version>
    </dependency>
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-chrome-driver</artifactId>
        <version>3.8.1</version>
    </dependency>
    <dependency>
        <groupId>info.cukes</groupId>
        <artifactId>cucumber-java</artifactId>
        <version>1.2.2</version>
    </dependency>
    <dependency>
        <groupId>info.cukes</groupId>
        <artifactId>cucumber-core</artifactId>
        <version>1.2.2</version>
    </dependency>
    <dependency>
        <groupId>info.cukes</groupId>
        <artifactId>cucumber-junit</artifactId>
        <version>1.2.2</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
    </dependency>
    <dependency>
        <groupId>info.cukes</groupId>
        <artifactId>cucumber-jvm</artifactId>
        <version>1.2.5</version>
        <type>pom</type>
    </dependency>
</dependencies>

最后是我的 Steps.Defs class:

package com.task.lab.steps;

import com.task.lab.decorator.bo.businessobjects.GmailMessage;
import com.task.lab.decorator.bo.businessobjects.Login;
import com.task.lab.driver.DriverObject;
import com.task.lab.propertyreader.ReadPropertyFile;
import cucumber.api.java.After;
import cucumber.api.java.en.Given;
import cucumber.api.java.en.Then;
import cucumber.api.java.en.When;

public class StepDefs {

private Login login = new Login();

@Given("^User is on SignIn page$")
public void openSignInPage(){
    LOG.info("Logging in");
    DriverObject.getDriver();
    DriverObject.getDriver().get(ReadPropertyFile.readGmailURL());
}

@When("^User enters (\S+) and (\S+)$")
public void enterCredentials(String email, String password) throws Throwable {
    login = new Login();
    login.login(email, password);
}

@Then("^User sends letter to (\S+) and alert is displayed letter is sent$")
public void composeLetter(String receiver){
    GmailMessage gmail = new GmailMessage();
    gmail.sendMessage(receiver);
}

@After
public void closeBrowser(){
    DriverObject.releaseThread();
}
}

当我尝试从 window 运行 TestRunner 时,我收到错误 未找到测试。正如我之前调查的那样,原因可能是我 运行 测试单元,而不是主 class。因此,我将此项目的 Intelij 设置重新配置为 运行,从 Cucumber for Java,并将 Main class 指定为 cucumber.api.cli.Main。但是,这给了我另一个错误 Test framework quit unexpectedly。我还尝试了仅 运行ning 功能文件,在这种情况下,测试是绿色的,但实际上,没有通过任何场景或步骤,如控制台中的输出所示:

0 Scenarios
0 Steps
0m0,000s

我也把我的Intelij重装到旗舰版,结果还是一样。有人可以帮我看看我做错了什么吗?

所以,我怀疑这个问题很小。在我以后的文件中,我删除了“:”并用垂直线“|”关闭了我的table:

Feature: Login to Gmail

 Scenario Outline: login compose and delete letter
    Given User is on SignIn page
    When User enters <Email> and <Password>
    Then User sends letter to <Receiver> and alert is displayed letter is sent
Examples:
  |Email                 |Password   |Receiver          |
  |testaccount@gmail.com |okokokokok |testtest@gmail.com|
  |testaccount@gmail.com |okokokokok |testtest@gmail.com|

工作得很好。