使用参数化测试返回方法不应具有参数

4

我遇到了一个问题,想要使用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"并没有很清楚地告诉我这个函数是做什么的。 - Jasper Lankhorst
2个回答

16

我不太理解你试图实现的目标,但你的代码存在一些问题:

  1. 由于存在 @ParameterizedTest@ValueSource,我认为你正在使用 JUnit 5。与此同时,看起来你将方法标记为了 JUnit 4 的注释(因为只有在这种情况下,你才会得到引用的异常文本)。
  2. 当方法被标注了 @ParametrizedTest 后,@Test 就是多余的。

你有两种方式可以解决以上所有问题:

  1. 如果你想要使用 JUnit 5,则需要删除 @Test 注释,并确保你的测试由支持 JUnit 5 的运行器启动(更多信息)。

    示例:

  2. 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);
        }
    }
    
  3. 如果想要使用JUnit 4,则需要删除@ParameterizedTest@ValueSource注释, 并重写您的测试以使用参数化运行程序 (更多信息)。


1

只需从您的代码中删除@Test一行即可


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接