0

我刚开始学习单元测试(使用 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

4

1 回答 1

1

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

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

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

  • car.turnLeft(32)(度数)
  • 或者看看什么时候发生car.turnLeft(0)
  • 或者car.turnLeft(190)(你正在进入car.turnRight这里的地形)
  • car.turnLeft(-12)(负向左转?)

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

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

这不是单元测试吗?

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

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

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