问题: 在运行A.story和B.story之前,必须运行并完成Procondition.story,因为Precondition.story在数据库中插入数据,然后由A.sotry和B.story使用。
我知道设置此依赖项的方法很少,但它们不适用于此上下文。
'Givenstories'注释没有多大帮助,因为在这种情况下,Precondition.story将运行两次,第一次为A.story,第二次为B.story,结果Precondition.story失败第二次说数据它试图插入数据库中已经存在。
Using Maven failsafe plugin这肯定会将Precondition.story置于执行列表的顶部,但所有这些故事都在多线程环境中运行,其中有8个线程准备好抓住故事同时运行。线程1采用Precondition.story,但是当故事尚未完成时,A.story和B.story通过线程2和3启动,使A.story和B.story失败。
指定覆盖storyPath()的故事顺序:由于上面#2中提到的相同问题而无效。
可能的解决方案:如何在一个布尔变量preconditionCompleted中维护Precondition.story的状态。当Precondition.story完成时,preconditionCompleted设置为true。然后在开头的A.story和B.story中添加一个步骤,每隔几秒钟对preconditionCompleted进行一次轮询,直到它变为真,然后执行故事的其余部分。
为此,我需要知道在哪里可以声明这些全局变量用于跨故事?
答案 0 :(得分:0)
你可以使用Singleton类,它将包含一些对象。此对象可以锁定在Precondition.story的@BeforeStory方法中,并在@afterStory中释放。然后在@BeforeStory方法的A和B故事中,你可以等到这个对象被释放然后执行它们。
我能想到的另一种方法是制作自定义订单注释,但是您需要创建逻辑来处理它。