Я пытаюсь написать модульный тест для метода 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 пытается сравнить двойник с позой, сгенерированной методом translatePose. Тем не менее, я не уверен, как сделать ожидаемую ценность позой, как, например, фактическая стоимость. Я думал о создании переменной с именем TrcPose2DResult и установке ее равной позе, но я точно не уверен, как это реализовать.