JBehave 中的故事计数错误
Posted
技术标签:
【中文标题】JBehave 中的故事计数错误【英文标题】:Story count is wrong in JBehave 【发布时间】:2017-03-28 20:57:24 【问题描述】:出于某种原因,JBehave 似乎在计算错误执行的故事数。为了说明我所指的行为,我设置了以下最小示例 - 它包含一个运行简单测试的故事:
JBehaveTest.java
package test.jbehave;
import org.jbehave.core.configuration.Configuration;
import org.jbehave.core.configuration.MostUsefulConfiguration;
import org.jbehave.core.io.LoadFromClasspath;
import org.jbehave.core.junit.JUnitStory;
import org.jbehave.core.reporters.Format;
import org.jbehave.core.reporters.StoryReporterBuilder;
import org.jbehave.core.steps.InjectableStepsFactory;
import org.jbehave.core.steps.InstanceStepsFactory;
public class JBehaveTest extends JUnitStory
@Override
public Configuration configuration()
return new MostUsefulConfiguration()
.useStoryLoader(new LoadFromClasspath(this.getClass()))
.useStoryReporterBuilder(new StoryReporterBuilder()
.withDefaultFormats()
.withFormats(Format.CONSOLE, Format.TXT));
@Override
public InjectableStepsFactory stepsFactory()
return new InstanceStepsFactory(configuration(), new TestSteps());
TestSteps.java
package test.jbehave;
import org.jbehave.core.annotations.Given;
import org.junit.Assert;
public class TestSteps
@Given("I run a test")
public void iRunATest()
Assert.assertTrue(true);
j_behave_test.story
Scenario: Some random text
Given I run a test
现在,我所期望的是,这会运行 1 个故事,其中包含 1 个场景。但它实际上运行了 2 个故事:
控制台输出
Processing system properties
Using controls EmbedderControls[...]
(BeforeStories)
Running story test/jbehave/j_behave_test.story
(test/jbehave/j_behave_test.story)
Scenario:
Given I run a test
(AfterStories)
Generating reports view to ...
Reports view generated with 2 stories (of which 0 pending) containing 1 scenarios (of which 0 pending)
我根本不明白为什么 JBehave 声称已经运行了包含 1 个场景的 2 个故事。我对 JBehave 比较陌生,所以如果你知道为什么会这样,请给我提示。谢谢!
更新 1 在过去的几天里,我经常使用 JBehave,发现这个问题在我的项目中经常出现。不幸的是,到目前为止我还没有找到解决方案,因此错误的计数一直影响着我的测试报告。
更新 2
将Scenario: Some random text
插入到故事文件中。
【问题讨论】:
这可能太简单了(我还没有测试过),但是您是否尝试过在故事文件的顶部简单地添加“场景:”?如果这没有任何改变,我会尝试在冒号后面加上一些文本。 @BillHileman 我将故事文件更改为Scenario: Some random text Given I run a test
不幸的是,我仍然得到相同的行为,即 2 个故事而不是一个。
你看过输出报告了吗?尽管您只运行了一个,但报告中实际上可能有两个故事。实际上,这是设计使然。以前运行的故事(使用其他名称)的统计数据通常会保留在报告中,直到数据被删除。检查您的 target/jbehave/view/index.html 文件以查看 html 报告。如果它确实有两个故事,那是你的问题。解决方案是清除该文件夹的文件以及它的父文件夹的 (targe/jbehave) 文件并再次运行您的测试。然后它应该只报告一个故事。
@BillHileman 这不是问题所在。 HTML 报告显示正确的数字(即 1 个故事和 1 个步骤)。只是为了确保我没有在某些时候弄乱配置:您是否尝试过重现该行为?
我没有,抱歉。故事文件是否与 test.jbehave 包位于同一文件夹中?是否存在其他故事文件?由于您没有指定要运行的故事,它可能只是运行该文件夹中的每个故事。我知道报告中只有一个,感谢您的确认,但也许存在另一个故事文件,无论出于何种原因正在“处理”但未报告。我对仅使用这三个文件如何运行测试还不够熟悉。
【参考方案1】:
这实际上是 JBehave 4.x 版本中的一个错误,它在控制台上打印此信息时计算“总计”报告统计信息。但是,不会创建“总计报告”本身。你可以在这里https://jbehave.atlassian.net/browse/JBEHAVE-1186跟踪这个问题
【讨论】:
以上是关于JBehave 中的故事计数错误的主要内容,如果未能解决你的问题,请参考以下文章