【问题标题】:Unit Testing questions单元测试问题
【发布时间】:2012-12-01 08:33:10
【问题描述】:

我刚开始学习单元测试(使用 FlexUnit)。我仍然不确定如何使用它们。

我创建了一个新的 flex 项目,并创建了一个名为 Car 的类。然后,我为 Car 类创建了一个 TestCase 类。

这是FlexBuilder给我的默认模板,我放了一些痕迹。

package flexUnitTests
{
    import flexunit.framework.Assert;

    public class CarTest
    {       
        [Before]
        public function setUp():void
        {
            trace('before test function');
        }

        [After]
        public function tearDown():void
        {
            trace('after test function');
        }

        [BeforeClass]
        public static function setUpBeforeClass():void
        {
            trace('before test class');
        }

        [AfterClass]
        public static function tearDownAfterClass():void
        {
            trace('after test class');
        }

        [Test]
        public function testCar():void
        {
            trace('the test function');

            var c:Car = new Car("gol");

            Assert.assertTrue("Is car name valid:", c.name != "gol");
        }
    }
}

我不明白为什么要在测试函数之前或之后运行这么多方法。为什么不在一个简单的函数中使用它们,比如:

        [Test]
        public function testCar():void
        {
            trace('before test class');
            trace('before test function');

            trace('the test function');

            var c:Car = new Car("gol");

            Assert.assertTrue("Is car name valid:", c.name != "gol");

            trace('after test function');
            trace('after test class');
        }

我想补充的第二个问题是,这些测试单独测试每个类(如实例化Car 类时所示)或者我可以通过实例化主类来测试我的整个应用程序一次?问题是如何模拟应用程序的整个用户流程(用户单击此处,向那里的服务器发送请求等)。我应该在测试方法中一个一个地写一个完整的流程吗? :O

【问题讨论】:

    标签: actionscript-3 apache-flex unit-testing flexunit


    【解决方案1】:

    我不明白为什么我要在测试函数之前或之后运行这么多方法。

    你没有来实现所有这些方法。 FB 为您生成了所有这些存根,但您不妨将它们排除在外。

    也就是说,您可以在一个测试类中拥有多个测试函数。您通常会测试一个类的每个公共函数。您甚至可以使用不同的极端情况参数集对每个函数进行多个测试。
    例如在您的示例中,您只测试构造函数,但您可能需要测试:

    • car.turnLeft(32)(度数)
    • 或者看看car.turnLeft(0)会发生什么
    • car.turnLeft(190)(这里是car.turnRight的地形)
    • car.turnLeft(-12)(负向左转?)

    before/after 方法可用于编写一些您希望在类中的每个测试之前/之后执行的代码,这样您就不必在每个测试函数中重复此操作。

    这些测试单独测试每个班级

    这是一个单元测试,不是吗?

    我可以通过实例化主类来测试我的整个应用程序吗?

    这不是单元测试的用途:它们只测试类。还有其他类型的测试工具可以测试(部分)应用程序:

    • 行为测试工具:您可以在其中编写包含典型执行序列的场景,并断言此类序列的结果是正确的。我相信Cucumber 可以通过这种方式测试 Flex 应用程序(但不完全确定)
    • UI 测试工具:您可以在其中记录用户在应用程序中点击的场景。然后可以回放这些场景以测试应用程序是否按预期运行。 FlexMonkey 是 Fl​​ex 应用程序的此类解决方案之一,但所有者似乎已经改变了产品的方向。

    【讨论】:

      猜你喜欢
      • 2016-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-09
      • 2014-06-21
      • 2011-10-30
      • 2012-04-09
      • 2023-04-03
      相关资源
      最近更新 更多