Jmeter BeanShell断言未通过测试

Jmeter BeanShell断言未通过测试,jmeter,automated-tests,beanshell,Jmeter,Automated Tests,Beanshell,我正在学习Jmeter 我有一个BeanShell断言,它应该使测试失败(失败被硬编码到断言中)。但是所有的测试都通过了。我做错了什么 我的理解是,如果BSA设置 Faliure = true; 断言失败了。 但就我而言,它并没有失败 请参阅: 您可以在屏幕截图上看到未实现的禁用XPath断言,如果我启用该断言,则该断言确实会像我预期的那样通过测试 更新:现在我明白了为什么它没有通过测试:失败有一个打字错误。。。接下来的问题是:它为什么会运行?这不是java吗?这不是一个未声明的变量吗 谢

我正在学习Jmeter

我有一个BeanShell断言,它应该使测试失败(失败被硬编码到断言中)。但是所有的测试都通过了。我做错了什么

我的理解是,如果BSA设置

Faliure = true;
断言失败了。 但就我而言,它并没有失败

请参阅:

您可以在屏幕截图上看到未实现的禁用XPath断言,如果我启用该断言,则该断言确实会像我预期的那样通过测试

更新:现在我明白了为什么它没有通过测试:失败有一个打字错误。。。接下来的问题是:它为什么会运行?这不是java吗?这不是一个未声明的变量吗


谢谢大家!

您有两个拼写错误,正确的语句是:

Failure = true;
FailureMessage = "Here goes the failure message";
断言是成功的,因为从Beanshell的角度来看,代码很好,在Beanshell中,您不需要显式定义对象类。只要它是有效的代码,您的断言就是成功的

以下是一些疑难解答技巧:

  • 添加
    debug()作为Beanshell脚本的第一行将触发调试输出,以
  • 通过将您的代码包围在以下位置:

    您将把相关的stacktrace打印到jmeter.log文件中

  • 有关在JMeter中使用Beanshell测试元素的全面信息,请参阅本文

    try {
        //your code here
    }
    catch (Throwable ex) {
        log.error("Failure", ex);
        throw ex;
    }