[Unity] Assertion(断言)另一种 Debug

  • Assert.AreEqual 与 Assert.AreNotEqual
  • Assert.AreApproximatelyEqual 与 Assert.AreNotApproximatelyEqual
  • Assert.IsTrue 与 Assert.IsFalse
  • Assert.IsNull 与 Assert.IsNotNull

检测是否违背指定的相等或不相等原则

    public void TestAssertEqual()
    {
        Assert.AreEqual("123", "456", "断言检测违背相等原则");

        Assert.AreNotEqual("123", "123", "断言检测违背不相等原则");
    }

检测是否约等于或不等于是否成立 

    public void TestAreApproximatelyEqual()
    {
        // 默认允许误差小于 0.00001f,这里我们制定误差为 0.01f
        Assert.AreApproximatelyEqual(0.9f, 0.91f, 0.01f, "断言检测 约等于 不成立");

        Assert.AreNotApproximatelyEqual(0.9f, 0.9000001f, 0.01f, "断言检测 不约等于 不成立");
    }

检测数值为True或False 


    public void TestIsTrue()
    {
        Assert.IsTrue(1 > 2, "违背结果为真的原则");

        Assert.IsTrue(Testbool());

        Assert.IsFalse(1 < 2, "违背结果为假的原则");
    }

    public bool Testbool()
    {
        return false;
    }

检测是否为Null 

    public void TestIsNull()
    {
        Student student1 = new Student();

        Assert.IsNull(student1,"检测结果值不为null");

        student1 = null;

        Assert.IsNotNull<Student>(student1,"检测结果为null");
    }

在断言中也可以自定义比较规则,代码如下 

public class Student
{
    public string name;
    public int number;
    public int age;
}
    public void TestCustomEqualityComparer()
    {
        Student S1 = new Student() { age = 1 };
        Student S2 = new Student() { age = 2 };
        Assert.AreEqual(S1, S2, "自定义比较结果为不相等", new CustomEqualityComparer<Student>((s1, s2) => { return s1.age == s2.age; }));
    }

比较的部分在于继承 IEqualityComparer 重新实现我们要比较的规则

断言中还有一个特性就是否阻止触发条件以后的代码块执行,使用对用的API为Assert.raiseExceptions,默认值为false

效果如下:

Assert.raiseExceptions = false;

    public void TestRaiseExceptions()
    {
        Assert.raiseExceptions = false;

        Assert.IsTrue(1 > 2);

        Assert.IsTrue(1 > 2, "自定义输出");

        Debug.LogError(new string('*', 20));

        Debug.Log("执行");
    }

Assert.raiseExceptions = true; 

    public void TestRaiseExceptions()
    {
        Assert.raiseExceptions = true;

        Assert.IsTrue(1 > 2);

        Assert.IsTrue(1 > 2, "自定义输出");

        Debug.LogError(new string('*', 20));

        Debug.Log("执行");
    }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DAGUNIANGZHOU

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值