单元测试问题



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

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

您不需要来实现所有这些方法。FB为您生成了所有这些存根,但您也可以忽略它们。

也就是说,在一个测试类中可以有多个测试函数。您通常测试类的每个公共函数。您甚至可以使用不同的角大小写参数集对每个函数进行多个测试
例如,在你的例子中,你只测试构造函数,但你可能有一个测试:

  • car.turnLeft(32)(以度为单位)
  • 或者看看car.turnLeft(0)
  • car.turnLeft(190)(此处为car.turnRight地形)
  • car.turnLeft(-12)(负向左转?)

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

这些测试单独测试每个类别的

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

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

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

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

最新更新