为什么断言在值相等时失败

时间:2016-06-29 00:57:44

标签: unity3d unity-test-tools

我在unity3d中写了我的第一个测试。我的目标是断言,当玩家运行时,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作为常量值而没有运气。

1 个答案:

答案 0 :(得分:0)

该值可能不完全为1,但您的断言告诉测试将其视为完全1。 但浮点变量不能安全地测试精确值。 因此,您可以尝试使用检查器中的“浮点错误”字段来允许所需值的最小差异。

例如,如果您的值预期为1 但实际上你的浮点(可以)是0.99998 ......

然后您可以将浮点错误设置为0.0001 所以断言将通过0.999900000 ...和1.000100000之间的值... 你的价值为0.99998,介于两者之间并通过。

这个问题与所有浮点数一起发生,因此也会出现矢量pistions的值,例如

编辑: 所以你看到的例外也有这个问题,认为实际是1而不是,它是......几乎是almoast 1 ^^