Java Jbehave布尔命名参数

Java Jbehave布尔命名参数,java,automated-tests,jbehave,Java,Automated Tests,Jbehave,在jbehave 3示例中,我可以看到参数为“double”,因此我尝试使用字符串以外的其他类型,但当我尝试添加这样的布尔参数时 public void theUserShouldBeRedirectedToHomePage(@Named("should?") boolean should) 我得到一个参数类型错误: java.lang.IllegalArgumentException: argument type mismatch at sun.reflect.NativeMetho

在jbehave 3示例中,我可以看到参数为“double”,因此我尝试使用字符串以外的其他类型,但当我尝试添加这样的布尔参数时

public void theUserShouldBeRedirectedToHomePage(@Named("should?") boolean should)
我得到一个参数类型错误:

java.lang.IllegalArgumentException: argument type mismatch
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.jbehave.scenario.steps.CandidateStep$1.perform(CandidateStep.java:225)
    at org.jbehave.scenario.ScenarioRunner$FineSoFar.run(ScenarioRunner.java:112)
(另外,我使用的是2.3版,而不是jbehave的3版)


我的jbehave版本有问题吗?使用布尔参数的正确方法是什么

我也试过这个。布尔/布尔没有默认参数转换器。您可以轻松添加一个


如果您将此参数传递给其他方法,有时更容易执行以下操作:

public void用户应被定向到主页(@Named(“should?”)Stringshould){

myNextMethod(Boolean.valueOf(should));
}

Jbehave版本3可以很好地使用布尔值。以下面的示例为例,它在我的代码中工作得非常好

@Then("I verify the response has _success as $_success and _warning as $_warning and _info as $_info and _messages as $_messages")
            public void pidOrPidColorDeleteResponse(
                    @Named("_success") Boolean _success,
                    @Named("_warning") Boolean _warning, 
                    @Named("_info") Boolean _info,
                    @Named("_messages") List<String> _messages) { 

            }
@然后(“我验证响应的成功为$\u success,警告为$\u warning,信息为$\u info,消息为$\u messages”)
公共无效pidOrPidColorDeleteResponse(
@命名为(“成功”)布尔“成功”,
@命名为(“警告”)布尔警告,
@命名为(“\u info”)布尔值,
@命名(“_消息”)列表_消息){
}

对于Jbehave版本2,需要检查。

这是非常不幸的,因为布尔类型似乎完美地映射到了它的字符串对应项中。希望他们在下一版本中将其作为默认转换器