다음을 통해 공유


스키마 및 맵에 단위 테스트 기능 사용

이 항목에서는 HelloWorld 오케스트레이션 예제에서 단위 테스트 기능을 사용하여 스키마 및 맵에 대한 단위 테스트를 추가하는 방법을 설명합니다.

참고

맵에 대한 단위 테스트 기능은 현재 여러 입력 맵을 지원하지 않습니다.

필수 구성 요소

먼저 HelloWorld 샘플을 빌드하는 단계를 수행해야 합니다. 이러한 단계는 HelloWorld(BizTalk Server 샘플)에서 찾을 수 있습니다.

HelloWorld 샘플에 단위 테스트 프로젝트 추가

  1. Visual Studio에서 HelloWorld.sln 솔루션 파일을 엽니다.

  2. 솔루션 탐색기 HelloWorld 프로젝트를 마우스 오른쪽 단추로 클릭한 다음 속성을 클릭합니다.

  3. 프로젝트 Designer 배포 속성 페이지 탭을 클릭하고 단위 테스트 사용을True설정합니다.

  4. 변경 내용을 저장하고 프로젝트 속성 페이지를 닫습니다.

  5. 기본 메뉴에서 빌드를 클릭한 다음 솔루션 다시 빌드를 클릭합니다.

  6. 기본 메뉴에서 테스트를 클릭한 다음 새 테스트를 클릭합니다.

  7. 새 테스트 추가 대화 상자에서 테스트 프로젝트에 추가 필드에 대한 새 Visual C# 테스트 프로젝트 만들기 선택합니다. 템플릿 목록에서 단위 테스트 마법사 선택한 다음 확인을 클릭합니다.

  8. 새 테스트 프로젝트 대화 상자에서 프로젝트 이름을 TestProject1로 두고 만들기를 클릭합니다.

  9. 단위 테스트 만들기 대화 상자에서 형식을 확장하고 Microsoft.Samples.BizTalk.HelloWorld.POSchema 노드에서 POSchema() 생성자를 선택합니다. 또한 Microsoft.Samples.BizTalk.HelloWorld.POToInvoice 노드에서 POToInvoice() 생성자를 선택합니다. 아래 그림은 선택해야 하는 항목을 보여 줍니다. 아래와 같이 선택한 후 확인을 누릅니다.

    단위 테스트 만들기 대화 상자를 보여 주는 이미지.

스키마 및 맵을 테스트할 테스트 코드 추가

  1. 참조 추가 대화 상자의 .NET 탭에서 TestProject1 프로젝트에 다음 참조를 추가합니다.

    • Microsoft.BizTalk.TestTools

    • Microsoft XLANG/s 기본 유형

  2. 솔루션 탐색기에서 POSchemaTest.cs를 엽니다.

  3. 파일 아래쪽으로 스크롤하여 POSchemaConstructorTest 메서드를 샘플 PO 입력 메시지의 유효성을 검사하는 다음 코드로 바꿉니다.

    [TestMethod()]
    public void POSchemaInstanceValidationTest()
    {
        POSchema target = new POSchema();
    
        //=== The SamplePOInput.xml file from <Samples Path>\Orchestrations\HelloWorld ===//
        string strSourcePO_XML = testContextInstance.TestDir + "..\\..\\..\\SamplePOInput.xml";
    
        //=== Validate the SamplePOInput message against the schema ===//
        Assert.IsTrue(target.ValidateInstance(strSourcePO_XML, Microsoft.BizTalk.TestTools.Schema.OutputInstanceType.XML));
    }
    
  4. 솔루션 탐색기에서 POToInvoiceTest.cs를 열고 이 파일의 맨 위에 다음 지시문을 추가합니다.

    
    using System.IO;
    
  5. 파일 아래쪽으로 스크롤하여 POToInvoiceConstructorTest 메서드를 샘플 PO 입력 메시지를 사용하여 맵을 테스트하는 다음 코드로 바꿉니다.

    
    [TestMethod()]
    public void POToInvoiceMapTest()
    {
        POToInvoice target = new POToInvoice();
    
        //=== Use the HelloWorld sample directory path for the message files ===//
    
        string strSourcePO_XML = testContextInstance.TestDir + "..\\..\\..\\SamplePOInput.xml";
        string strDestInvoice_XML = testContextInstance.TestDir + "..\\..\\..\\SampleInvoiceOutput.xml";
    
        //=== Test the map by using the TestMap method of the TestableMapBase class ===//
    
        target.ValidateOutput = true;
        target.TestMap(strSourcePO_XML,
                       Microsoft.BizTalk.TestTools.Schema.InputInstanceType.Xml,
                       strDestInvoice_XML,
                       Microsoft.BizTalk.TestTools.Schema.OutputInstanceType.XML);
    
        //=== Output file should be created as a result of testing the map ===//
    
        Assert.IsTrue(File.Exists(strDestInvoice_XML));
    }
    

단위 테스트 빌드 및 실행

  1. 솔루션 탐색기 TestProject1을 마우스 오른쪽 단추로 클릭한 다음 빌드를 클릭합니다.

  2. 기본 메뉴에서 테스트를 클릭한 다음 Windows 목록에서 테스트 보기를 클릭합니다.

  3. 테스트 보기 창에서 POSchemaInstanceValidationTest를 마우스 오른쪽 단추로 클릭한 다음 선택 영역 실행을 클릭합니다. 테스트 결과 창에 통과됨 이 표시되는지 확인합니다.

  4. 테스트 보기 창에서 POToInvoiceMapTest를 마우스 오른쪽 단추로 클릭한 다음 선택 영역 실행을 클릭합니다. 테스트 결과 창에 통과됨 이 표시되는지 확인합니다.

  5. 테스트에 실패한 경우 테스트 결과 창에서 테스트를 두 번 클릭하여 테스트 실패의 원인인 어설션 또는 예외를 확인할 수 있습니다.

테스트 코드 요약

HelloWorld 프로젝트에 단위 테스트를 사용하도록 설정한 경우 POSchema.xsd와 연결된 C# 클래스는 Microsoft.BizTalk.TestTools.Schema.TestableSchemaBase 클래스에서 파생되었습니다. TestProject1POSchemaInstanceValidationTest 메서드는 POSchema 클래스의 ValidateInstance 메서드를 사용하여 PO 스키마에 대한 SamplePOInput.xml 유효성을 검사했습니다.

마찬가지로 HelloWorld 프로젝트에 단위 테스트를 사용하도록 설정했을 때 POToInvoice.btm 맵과 연결된 C# 클래스는 Microsoft.BizTalk.TestTools.Mapper.TestableMapBase 클래스에서 파생되었습니다. POToInvoiceMaptest 메서드는 POToInvoice 클래스의 TestMap 메서드를 사용하여 동일한 SamplePOInput.xml 메시지를 사용하여 맵을 테스트했습니다. 그 결과 HelloWorld 디렉터리에 SampleInvoiceOutput.xml이 만들어졌습니다.

참고 항목

단위 테스트로 작업하는 파이프라인에서 단위 테스트 기능 사용(Visual Studio)