JUnit测试- ParameterizedTests -没有隐式转换,无法将Lab_4.Point类型的对象转换为java.util.ArrayList类型

x6yk4ghg  于 2022-11-11  发布在  Java
关注(0)|答案(2)|浏览(134)

我使用的是JUnit 5。您认为我遗漏了什么:\

class KPointTest {
@ParameterizedTest
@MethodSource("generateArgument")
void testForPoint(ArrayList<Point> points)
{
    KPoint k = new KPoint(10);
    for(Point po: points)
    {
        assertTrue(1 == k.point(po));
    }

}
public static Stream<Arguments> generateArgument()
{
    ArrayList<Arguments> p = new ArrayList<Arguments>();

    p.add(Arguments.of(new Point(1,2)));
    p.add(Arguments.of(new Point(3,7)));
    p.add(Arguments.of(new Point(5,8)));
    p.add(Arguments.of(new Point(4,8)));
    return p.stream();
}

错误:
异常错误类型:转换索引0处的参数时出错:没有隐式转换来转换Lab_4.Point类型的对象到java.util.ArrayList类型

vsaztqbk

vsaztqbk1#

试试看:

class KPointTest {
@ParameterizedTest
@MethodSource("generateArgument")
void testForPoint(Point point)
{
    KPoint k = new KPoint(10);

    assertTrue(1 == k.point(po));
}
public static Stream<Arguments> generateArgument()
{
    ArrayList<Arguments> p = new ArrayList<Arguments>();

    p.add(Arguments.of(new Point(1,2)));
    p.add(Arguments.of(new Point(3,7)));
    p.add(Arguments.of(new Point(5,8)));
    p.add(Arguments.of(new Point(4,8)));
    return p.stream();
}
3j86kqsm

3j86kqsm2#

将测试编写为

class KPointTest {
@ParameterizedTest
@MethodSource
void testForPoint(Point point)
{
    KPoint k = new KPoint(10);
    for(Point po: points)
    {
        assertTrue(1 == k.point(po));
    }

}
 static Stream<Arguments> testForPoint()
{
   return Stream.of(Arguments.of(new Point(1,2)),
    Arguments.of(new Point(3,7)),
    Arguments.of(new Point(5,8)),
    Arguments.of(new Point(4,8)));
}

您的测试方法只接收Stream的单个项,因此测试方法需要相应的参数。
您可以像这样为测试方法声明多个参数

@ParameterizedTest
    @MethodSource
    void testForPoint(Point point, String someValue) {... }
static Stream<Arguments> testForPoint()
    {
       return Stream.of(Arguments.of(new Point(1,2), "abc"),
        Arguments.of(new Point(3,7), "def"),
        Arguments.of(new Point(5,8), "ghi"),
        Arguments.of(new Point(4,8), "jkl"));
    }

相关问题