Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在不同的语言中使用黄瓜/小黄瓜?_Java_Eclipse_Cucumber_Bdd_Gherkin - Fatal编程技术网

Java 如何在不同的语言中使用黄瓜/小黄瓜?

Java 如何在不同的语言中使用黄瓜/小黄瓜?,java,eclipse,cucumber,bdd,gherkin,Java,Eclipse,Cucumber,Bdd,Gherkin,我正在我的公司里用Cucumber、Sikuli和Eclipse建立一个测试环境。我已经设法使一切正常工作,但现在我需要使.feature文件以葡萄牙语工作 据我所知,我所要做的就是把注释#language:pt放在.feature文件的开头,但它不起作用 我还运行了命令cucumber--i18n help和cucumber--i18n pt,检查该语言是否真的存在,并且确实存在 是否有其他配置我不知道 我在用这些罐子: cucumber-core-3.0.2.jar cucumber-ja

我正在我的公司里用Cucumber、Sikuli和Eclipse建立一个测试环境。我已经设法使一切正常工作,但现在我需要使.feature文件以葡萄牙语工作

据我所知,我所要做的就是把注释
#language:pt
放在.feature文件的开头,但它不起作用

我还运行了命令
cucumber--i18n help
cucumber--i18n pt
,检查该语言是否真的存在,并且确实存在

是否有其他配置我不知道

我在用这些罐子:

  • cucumber-core-3.0.2.jar
  • cucumber-java-3.0.2.jar
  • cucumber-junit-3.0.2.jar
  • cucumber-jvm-deps-1.0.6.jar
  • 小黄瓜-5.1.0.jar
  • junit-4.12.jar
  • mockito-all-1.10.19.jar

您可以通过添加
#language:xx
作为第一行来控制小黄瓜关键词的语言

对葡萄牙人来说是这样

# language: pt
Funcionalidade: um exemplo
有关所有受支持的口语的列表,请访问。例如,您可以在中查找的本地化关键字

一个简单的Maven项目

结构

pom.xml
src/test/java/features/example.feature
src/test/java/runner/TestRunner.java
# language: pt
Funcionalidade: um exemplo

  Cenario: foo
  Dado something given
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.suboptimal</groupId>
    <artifactId>cuke-test-13.so</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <version.cucumber>3.0.2</version.cucumber>
    </properties>
    <dependencies>
        <dependency>
            <groupId>io.cucumber</groupId>
            <artifactId>cucumber-java</artifactId>
            <version>${version.cucumber}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>io.cucumber</groupId>
            <artifactId>cucumber-junit</artifactId>
            <version>${version.cucumber}</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>
src/test/java/runner/TestRunner.java

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

@RunWith(Cucumber.class)
@CucumberOptions(
        features = "src/test/java/features/example.feature"
        )
public class TestRunner {
}
使用
mvn编译测试运行测试将产生以下错误

Undefined scenarios:
src/test/java/features/example.feature:4 # foo

1 Scenarios (1 undefined)
1 Steps (1 undefined)
0m0.036s


You can implement missing steps with the snippets below:

@Dado("something given")
public void something_given() {
    // Write code here that turns the phrase above into concrete actions
    throw new PendingException();
}
编辑当功能文件以
Notepad
的形式保存在Windows上时,BOM字符(EF BB BD)将插入开头

$hextump-C示例。功能
00000000ef bb bf23 20 6c 61 6e 67 75 61 67 65 3a 20 70 | |#>语言:p|

如果运行
mvn测试
,则执行失败,出现异常

cucumber.runtime.CucumberException: gherkin.ParserException$CompositeParserException: Parser errors:
(1:1): expected: #EOF, #Language, #TagLine, #FeatureLine, #Comment, #Empty, got '# language: pt'
(2:1): expected: #EOF, #Language, #TagLine, #FeatureLine, #Comment, #Empty, got 'Funcionalidade: um exemplo'
(4:3): expected: #EOF, #Language, #TagLine, #FeatureLine, #Comment, #Empty, got 'Cenario: foo'
(5:3): expected: #EOF, #Language, #TagLine, #FeatureLine, #Comment, #Empty, got 'Dado something given'

我用不同的十六进制查看器打开了.feature文件,这似乎更正确:

奇怪的是,尽管有错误,我还是试着执行代码,结果成功了。我真的不知道为什么。出于测试目的,我只将关键字改为葡萄牙语。代码显示了错误,但执行了所有步骤,就好像一切正常一样


eclipse关于错误的唯一说法是
missing'特性:'at'functionalidade:'

首先,感谢所有帮助我的人

过了很长时间,我终于发现了这个问题

Sébastien Le Callonnec关于 让我明白了。问题在于自然插件


从一开始一切都正常,但事实证明Natural只支持英语。这就是为什么它抛出错误,但测试正在执行。卸载插件后,错误消失了。

本质上,他只是错过了空间?@KyleFairns我错过了问题中的这一部分。但空白并不重要。我将添加一个例子,我没有使用maven,但我确实创建了另一个例子,maven按照这些说明,调整需要调整的内容,但结果是一样的。当我使用
functionalidade:abrindo a lista de pedidos
时,它仍然在“functionalidade”处抛出此错误
缺少“功能”
@BrunoPinheiro我添加了完整的
pom.xml
。您使用的是哪个Maven/Java版本?您的区域设置是什么(
java-XshowSettings:properties 2>&1 | egrep“user.(language | country)”
)?现在我使用的是java 1.8.0.171、Maven Compiler 3.3、Cucumber、1.2.5、Gherkin 2.12.2,但我也尝试了Maven repository上可用的最新版本,country是BR,language是pt。我在回答中添加了一些代码片段。也许你可以从它们开始。你在Windows上吗?检查编辑器是否未将功能文件保存为UTF-8,并在开头使用BOM字符(EF BB BF)(最好使用十六进制查看器或类似工具)。您的十六进制转储似乎发生了移位或类似情况。由于图像中的字节表示“主菜单中的am”\n Quando i单击“订单”按钮\n Então订单列表应打开”。Eclipse是否说明了错误的类型?新的hexdump看起来更好。也许这是Eclipse的Cucumber插件的问题,它带有本地化的关键字。