【问题标题】:Use parameterized test returns Method should have no parameters使用参数化测试返回方法应该没有参数
【发布时间】:2020-01-28 22:15:08
【问题描述】:

我有一个问题,我想通过测试方法使用 GET 方法和 POST 发送请求。我使用了参数化,但我得到了信息 java.lang.Exception: Method simpleMessage should have no parameters

  @Test
    @ParameterizedTest
    @ValueSource(strings = {"true", "false"})
    public void simpleMessage (boolean isPost) {
        verifyIdOdpEqual(isPost,1243, "message");
    }

【问题讨论】:

  • 我不知道你想做什么,但测试就像一个 void 函数,你首先运行带有注释的函数,然后在函数内部告诉它运行其他函数,如“simpleMessage ( boolean isPost)" 函数。基本上创建 @Test testPostFunction(){ 添加起始条件。在 simpleMessage(boolean) 函数中执行某些操作并断言 simpleMessage 结果是否有效。名称“verifyIdOdpEqual”并没有清楚地告诉我该函数的作用。

标签: java junit parameterized-tests


【解决方案1】:

我也不太了解您想要实现的目标,但您的代码几乎没有问题:

  1. 由于存在@ParameterizedTest 和@ValueSource,我假设您使用的是Junit5。同时,您似乎使用 junit4 的注释标记了您的方法(因为只有在这种情况下,您引用的文本才会出现异常)。
  2. 当方法使用@ParametrizedTest 注解时,@Test 是多余的

您有 2 个选项来解决以上所有问题:

  1. 如果您想使用 junit5,那么您需要删除 @Test 注解并确保您的测试由支持 junit5 more info 的运行器启动。 示例:
package test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; public class TestTest { @ParameterizedTest @ValueSource(booleans = {true, false}) public void test(boolean data) { System.out.println(data); } }
  1. 如果您想使用 junit4,那么您需要删除 @ParameterizedTest 和 @ValueSource 注释并重写您的测试以使用参数化运行器 more info

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-31
    • 2012-01-20
    • 1970-01-01
    • 1970-01-01
    • 2012-03-20
    • 1970-01-01
    • 1970-01-01
    • 2020-10-22
    相关资源
    最近更新 更多