我正在尝试为方法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/