2012-12-13 8 views
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"); 
     } 
    } 
} 

테스트 기능 전후에 실행할 메소드가 왜 그렇게 많은지 알 수 없습니다. 왜 그냥 같이 간단한 funcion 내에서이를 사용 :

내가 추가 할 두 번째 질문은, ( Car 클래스를 instancianting 때 표시 등)이 시험은, individualy 각 클래스를 테스트하거나 내 전체를 테스트 할 수있다
 [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'); 
     } 

주 수업을 instanciating하여 한 번 응용? 문제는 응용 프로그램의 전체 사용자 흐름을 시뮬레이트하는 방법입니다 (사용자가 여기를 클릭하고 거기에 서버에 요청을 보내는 등 등). 나는 테스트 방법으로 전체 흐름을 하나씩 작성해야합니까? :O

답변

1

테스트 기능 전후에 실행할 메소드가 왜 그렇게 많은지 알 수 없습니다.

이러한 모든 방법을 구현하려면 이 없습니다. FB가이 모든 스텁을 생성했지만, 남겨 둘 수도 있습니다.

즉, 테스트 클래스 내에 둘 이상의 테스트 기능을 가질 수 있습니다. 일반적으로 클래스의 모든 공용 함수를 테스트합니다. 각기 다른 대소 문자 집합을 사용하여 함수 당 여러 개의 테스트를 수행 할 수도 있습니다.
예 : 귀하의 예제에서 당신은 단지 생성자를 테스트,하지만 당신은에 대한 테스트있을 수 있습니다 : (도)

  • car.turnLeft(32)
  • 또는 car.turnLeft(0)
  • 또는 car.turnLeft(190)은 (는 지형에 점점 때 어떻게되는지 여기 car.turnRight)
  • 또는 car.turnLeft(-12) (음의 turnLeft α) 전에

/방법이 일부 상환을 작성하는 데 사용될 수 후 e를 클래스의 모든 테스트 전/후에 실행해야하므로 각 테스트 함수에서이 작업을 반복하지 않아도됩니다.

이러한 테스트

은 individualy

그것은 단위 테스트가되지 않은 각 클래스를 테스트?

메인 클래스를 인스턴스화하여 전체 응용 프로그램을 한 번 테스트 할 수 있습니까?

이것은 단위 테스트의 목적이 아닙니다. 테스트는 클래스 만 테스트합니다.

  • 행동 테스트 도구 : 당신이 시나리오의 전형적인 실행 순서를 포함하며 시퀀스의 결과가 정확하다는 것을 주장하는 쓰기하는 (의 일부) 응용 프로그램을 테스트하는 테스트 도구의 다른 종류가 있습니다. 나는 Cucumber이 이런 식으로 플렉스 앱을 테스트 할 수 있다고 믿는다. (그러나 확실하지는 않다.)
  • UI 테스트 도구 : 애플리케이션에서 클릭하는 사용자의 시나리오를 기록한다. 이러한 시나리오는 응용 프로그램이 예상대로 계속 실행되는지 테스트하기 위해 재생할 수 있습니다. FlexMonkey은 Flex 앱용 솔루션 중 하나이지만, 소유자가 제품의 방향을 변경 한 것처럼 보입니다.
+0

아, 매우 계몽! – Fabricio