2016-06-29 5 views
1

Я пишу свой первый тест в единстве3d. Моя цель состоит в том, чтобы утверждать, что по ходу игры ось Z остается последовательной, а высота не изменяется. Другими словами, позиция z персонажа является постоянным значением 1.Почему утверждение терпит неудачу, когда значения равны

enter image description here

Этот тест постоянно завершается с выходом:

AssertionException: FloatComparer assertion failed. 
Character.Transform.up.z CompareToConstantValue 1 failed. Expected: 1 Actual: 1 
Created in 
UnityEngine.Debug:LogException(Exception, Object) 
UnityTest.ActionBase:Fail(AssertionComponent) (at Assets/UnityTestTools/Assertions/Comparers/ActionBase.cs:93) 
UnityTest.Assertions:CheckAssertions(AssertionComponent[]) (at Assets/UnityTestTools/Assertions/Assertions.cs:37) 
UnityTest.Assertions:CheckAssertions(AssertionComponent) (at Assets/UnityTestTools/Assertions/Assertions.cs:18) 
UnityTest.AssertionComponent:CheckAssertionFor(CheckMethod) (at Assets/UnityTestTools/Assertions/AssertionComponent.cs:251) 
UnityTest.AssertionComponent:Update() (at Assets/UnityTestTools/Assertions/AssertionComponent.cs:148) 

ОЖИДАЕМОГО/фактические значения одинаковы, так что я изо всех сил, чтобы увидеть, в чем проблема. Любое понимание было бы оценено.

Потому что это поплавок, я пытался использовать 1.0 как постоянное значение без везения.

ответ

0

Значение может быть не ровно 1, но ваше утверждение говорит, что тест ожидает его как ТОЧНО 1. Но переменная с плавающей запятой не является безопасной для проверки на точные значения. Таким образом, вы можете попытаться разрешить минимальную разницу требуемого значения, используя поле «Ошибка с плавающей точкой» в инспекторе.

Например, если ваше значение, как ожидается, будет 1 Но в реальности ваша с плавающей точкой (может быть) 0,99998 ...

Затем вы можете установить Floating ошибку точки 0.0001 Таким образом, утверждение будет проходить со значениями между 0.999900000 ... и 1.000100000 ... И ваше значение 0.99998 woule должно находиться между ними и проходить.

Это вопросы ocure со всеми числами с плавающей точкой, так и со значениями вектора pistions, например

EDIT: Так исключение вы видите также с этой проблемой, полагая, что актуальным является 1, но это не так, это ... почти almoast 1 ^^

Смежные вопросы