You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JUnit参数化测试执行失败:No public static parameters方法异常求助

JUnit Parameterized测试报错解决

问题详情

运行JUnit Parameterized测试时触发以下错误:

java.lang.Exception: No public static parameters method on class com.nyl.group.bpbilling.util.ParsingUtilTest
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
at java.base/java.util.ArrayList$ArrayListSpliterator.tryAdvance(ArrayList.java:1602)
at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:129)
at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:527)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:513)

测试代码如下:

@RunWith(Parameterized.class)
public class ParsingUtilTest {
    
    @Test
    @Parameters
    public List<String[]> parameters() {
            return Arrays.asList(
                new String[]{"wrtier { type=file  }; reader { type=DB, query=update asdsadsad  }; processor { type = None }", "{wrtier={type=file}, reader={type=DB, query=update asdsadsad}, processor={type=None}}"},
                new String[]{"wrtier { type=file  };wrtier { type=file  }", "{wrtier={type=file}, wrtier_1={type=file}}"},
                new String[]{"", "{}"},
                new String[]{"{}", ""},
                new String[]{";wrtier { type=file  }", "{}"},
                new String[]{"{}", ";wrtier { type=file  }"},
                new String[]{"wrtier type=file}", "wrtier type=file}"},
                new String[]{"{w={t=f}}", "w{t=f}"}
            );
        }
    public void testParseStepSequenceInMapCnd1(String level, String expected ) throws Exception {
        CnfStep step = new CnfStep();
        step.setStepParams(level);
        assertEquals(expected, ParsingUtil.parseStepSequenceInMap( step.getStepParams() ).toString());
    }
}

解决方法

报错原因清晰:JUnit Parameterized要求提供测试参数的方法必须是public static,且不能加@Test注解。你的代码存在三个问题,修正即可:

  • 给参数方法parameters()添加static修饰符
  • 移除参数方法上的@Test注解(仅保留@Parameters)
  • 给测试方法testParseStepSequenceInMapCnd1添加@Test注解,否则测试不会被执行

修正后的代码:

@RunWith(Parameterized.class)
public class ParsingUtilTest {
    
    @Parameters
    public static List<String[]> parameters() {
            return Arrays.asList(
                new String[]{"wrtier { type=file  }; reader { type=DB, query=update asdsadsad  }; processor { type = None }", "{wrtier={type=file}, reader={type=DB, query=update asdsadsad}, processor={type=None}}"},
                new String[]{"wrtier { type=file  };wrtier { type=file  }", "{wrtier={type=file}, wrtier_1={type=file}}"},
                new String[]{"", "{}"},
                new String[]{"{}", ""},
                new String[]{";wrtier { type=file  }", "{}"},
                new String[]{"{}", ";wrtier { type=file  }"},
                new String[]{"wrtier type=file}", "wrtier type=file}"},
                new String[]{"{w={t=f}}", "w{t=f}"}
            );
        }
    
    @Test
    public void testParseStepSequenceInMapCnd1(String level, String expected ) throws Exception {
        CnfStep step = new CnfStep();
        step.setStepParams(level);
        assertEquals(expected, ParsingUtil.parseStepSequenceInMap( step.getStepParams() ).toString());
    }
}

内容的提问来源于stack exchange,提问作者kanna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 18:51:10