我正在尝试为方法translatePose(下面的代码)编写单元测试。

public TrcPose2D translatePose(double xOffset, double yOffset)
    {
        final String funcName = "translatePose";
        TrcPose2D newPose = clone();
        double angleRadians = Math.toRadians(newPose.angle);
        double cosAngle = Math.cos(angleRadians);
        double sinAngle = Math.sin(angleRadians);

        newPose.x += xOffset*cosAngle + yOffset*sinAngle;
        newPose.y += -xOffset*sinAngle + yOffset*cosAngle;

        if (debugEnabled)
        {
            dbgTrace.traceInfo(funcName, "xOffset=%.1f, yOffset=%.1f, Pose:%s, newPose:%s",
                    xOffset, yOffset, this, newPose);
        }

        return newPose;
    }   //translatePose


我写了一个快速模板,看起来像:

public class TrcPose2DTest {
    @Test
    public void testTranslatePose() {

        assertEquals(0.0, new TrcPose2D(0,0));
        assertEquals(4.46, new TrcPose2D(4,2).translatePose(4,2).x, 1e-9);
        assertEquals(3.58, new TrcPose2D(4,2).translatePose(4,2).y, 1e-9);


问题在于assertEquals试图将double与方法translatePose生成的姿势进行比较。但是,我不确定如何使期望值成为姿势,就像实际值一样。我曾考虑过要创建一个名为TrcPose2DResult的变量并将其设置为等于姿势,但是我不确定如何实现这一点。

最佳答案

看来问题是您的第一个断言:

assertEquals(0.0, new TrcPose2D(0,0));


当您将双精度0.0与该断言中的TrcPose2D对象进行比较时。

我将检查该TrcPose2D对象的x和y值,就像在其他两个断言也是双精度值时所做的那样:

assertEquals(0.0, new TrcPose2D(0,0).x, 1e-9);
assertEquals(0.0, new TrcPose2D(0,0).y, 1e-9);


并保留其他两个断言,以测试translatePose方法。

关于java - 如何使assertEquals方法中的预期对象成为姿势(在函数中,请参见下面的代码),而不是整数或 double ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59913677/

10-09 00:48