2008-09-16 11 views
4

예 : Reductio (자바/스칼라의 경우) 및 QuickCheck (하스켈의 경우). 내가 생각하고있는 프레임 워크의 종류는 내장형 데이터 유형에 "생성기"를 제공하고 프로그래머가 새로운 생성기를 정의 할 수있게 해줍니다. 그런 다음 프로그래머는 적절한 유형의 변수를 매개 변수로 사용하여 일부 속성을 선언하는 테스트 메소드를 정의합니다. 그런 다음 프레임 워크는 매개 변수에 대한 무작위 데이터를 생성하고 해당 메서드에 대한 수백 가지 테스트를 실행합니다.C# .Net 2.0에 대한 사양 기반 테스트 프레임 워크가 있습니까?

예를 들어 Vector 클래스를 구현하고 add() 메서드가있는 경우 내 추가 기능이 통근하는지 확인할 수 있습니다. 그뿐만 아니라 통근 있는지 확인하기 위해 내가 testAddCommutes를 실행할 수

boolean testAddCommutes(Vector v1, Vector v2) { 
    return v1.add(v2).equals(v2.add(v1)); 
} 

()이 특히 벡터에 : 그래서 나는 (의사)에 다음처럼 작성할 수 있습니다. 그러나 testAddCommutes의 몇 가지 호출을 작성하는 대신 임의의 벡터를 생성하는 절차를 작성합니다. 이를 감안할 때 프레임 워크는 수백 가지의 다양한 입력에 대해 testAddCommutes를 실행할 수 있습니다.

누구에게나이 벨소리가 울립니까?

답변

-1

내가 제대로 이해하지만,이 체크 아웃하지 않을 수도 있습니다 ... 내가 제대로 중 하나를 이해하지 않을 수 있습니다

http://www.ayende.com/projects/rhino-mocks.aspx

+1

조롱에 대한 질문이 없습니다. –

1

하지만 PEX 당신에게 유용 할 수 있습니다.

1

내 이전 발언에 정교, 의사 코드 예제를 테스트 할 QN 코드는 다음과 같을 것이다 : DoubleVectorGenerator는 유형 입력 <의 값을 제공 - 정의 클래스가

 
new TestRun(1, 1000) 
    .AddTransition(new MetaTransition<Input<Vector, Vector>, Vector> 
    { 
     Name = "Vector Add ", 
     Generator = DoubleVectorGenerator, 
     Execute = input => input.paramOne.Add(input.paramTwo) 
    } 
    .RegisterProperty(
     (input, output) => 
      new QnProperty(
       "Is Communative", 
       () => QnAssert.IsTrue(output == input.paramTwo.Add(input.paramOne)) 
      ) 
     ) 
    ) 
    .Verify() 
    .RethrowLastFailureifAny() 
    .ReportPropertiesTested(new ConsoleReporter()); 

을 벡터, 벡터 >입니다.