使用afterFeature挂钩调用时,动态场景冻结

问题描述 投票:1回答:1

当我使用afterFeature挂钩调用功能文件进行测试清除时,行为异常。可以正确调用清除功能文件,因为我可以从文件的“背景”部分看到打印内容,但是由于某种原因,方案大纲的执行挂起。

我已经尝试通过Junit5 Runner以及在IntelliJ IDEA中通过右键单击功能文件来运行功能,但是遇到相同的问题,执行挂起。

这是我的主要功能文件:

Feature: To test afterFeature hook

  Background:
    * def num1 = 100
    * def num2 = 200
    * def num3 = 300

    * def dataForAfterFeature =
    """
    [
      {"id":'#(num1)'},
      {"id":'#(num2)'},
      {"id":'#(num3)'}
    ]
    """
  * configure afterFeature = function(){ karate.call('after.feature'); }

  Scenario: Test 1
    * print 'Hello World 1'

  Scenario: Test 2
    * print 'Hello World 2'

afterFeature文件:

@ignore

Feature: Called after calling feature run is completed

  Background:
    * def dynamicData = dataForAfterFeature
    * print 'dynamicData: ' + dynamicData

  Scenario Outline: Print dynamic data
    * print 'From after feature for id: ' + <id>

    Examples:
    | dynamicData |

执行停滞在方案大纲中。我可以在控制台中看到dynamicData变量的打印值,但此后没有任何反应。

似乎轮廓循环未开始或已崩溃?由于测试尚未完成或没有错误报告,因此无法从日志中获取详细信息。我还能检查什么或可能是什么问题?

如果不容易重现,建议使用哪种测试清除方法?

karate
1个回答
0
投票

[是的,我个人建议始终采用一种预先清理的策略,因为您不能保证会调用一个“ after”挂钩,例如如果机器关闭了。

有时,最简单的选择是作为JUnit测试套件中的普通Java代码执行此操作。因此,使用Runner后单行也许就足够了。

如果您需要跟踪测试创建的动态数据,这将非常棘手。我要做的是编写一个Java单例,在测试中使用它来“收集”需要删除的ID,然后在JUnit类中使用它。您可以使用@AfterClass之类的东西。

请尝试按照此处的说明进行复制:@AfterClass

© www.soinside.com 2019 - 2024. All rights reserved.