문제

우리 팀은 우리가 쓴 큰 시스템에 대한 API 개발을 책임지고 있습니다. API를 사용하는 다른 개발자가이를 사용하는 방법을 배울 수 있도록 예제 코드를 제공해야합니다. XML 문서 주석을 사용하여 코드를 문서화하고 있습니다. 예를 들어.

/// <summary>Summary here</summary>
/// <example>Here is an example  <code>example code here</code> </example>
public void SomeFunction() 

그런 다음 Sandcastle을 사용하고 필요한 도움말 파일 (CHM 및 온라인 웹 사이트)을 작성합니다.

예제 코드가 작동하지 않을 때는 매우 창피합니다. 일반적으로 일부 기능이 변경되었거나 간단한 오류가 발생했기 때문입니다.

누구든지 이와 같은 작업을 수행 한 적이 있지만 예제 코드에서 실행되도록 단위 테스트를 구성하여 빌드 중에 작동하는 것으로 알려져 있습니까?

도움이 되었습니까?

해결책

예, Sandcastle은 이것을 지원하며 예제의 정확성을 유지하는 것이 좋습니다. 다음과 같은 코드 영역을 가리킬 수 있습니다.

   /// <summary>
   /// Gizmo which can act as client or server.
   /// </summary>
   /// <example>
   /// The following example shows how to use the gizmo as a client:
   /// <code lang="cs"
   ///    source="..\gizmo.unittests\TestGizmo.cs"
   ///    region="GizmoClientSample"/>
   /// </example>
   public class Gizmo

그런 다음 Revelgizmo.cs에서 일부 테스트 코드를 지역에서 둘러싸여 예제로 사용할 수 있습니다.

[Test]
public GizmoCanActAsClient()
{
   #region GizmoClientSample
   Gizmo gizmo = new Gizmo();
   gizmo.ActAsClient();
   #endregion
}

경고 : 테스트 파일을 이동하거나 바꾸면 Sandcastle로 문서를 재생하려고 할 때만 오류가 발생합니다.

다른 팁

XML에 "이 장소에서 코드 샘플을 잡아라"라는 특별한 마크 업을 사용하는 것이 좋습니다. 단위 테스트로 실행할 수있는 일반 C# 파일을 참조합니다. 모범을 보이려면 다음과 같습니다.

/// <summary>Summary here</summary>
/// <example>Here is an example
/// <code>!!sourcefile:SomeClassTest.cs#SomeFunction!!</code></example>
public void SomeFunction()

단위 테스트는 정상적으로 실행 된 다음 "XML 만들기"와 "run sandcastle"사이에 빌드 단계를 삽입합니다. 각 "파일 토큰"을 적절한 내용으로 교체합니다. DOC 생성 시간 에이 작업을 수행하기 위해 Sandcastle에 넣을 수있는 고리도있을 수도 있습니다. Sandcastle에 대해 확실히 알 수 없습니다.

물론 자신만의 마크 업을 발명하는 것은 못 생겼지 만 작동해야합니다.

물론 이것은 코드 예제가 쉽게 단위 테스트 가능하다고 가정합니다. 일부는 그렇지 않을 수 있습니다 (자원 등을 다루는 경우). 적어도 당신은 그것이 컴파일한다는 것을 알고있을 것입니다 :)

간단한 해결책 :모든 샘플 코드 헤더를 포함하는 작은 응용 프로그램을 작성한 다음 해당 항목 지점을 호출하십시오.

#include "samples/sampleA.h"

void main()
{
  SomeFunction();
}

그런 다음 빌드를 실행 한 후이 작은 앱을 실행하면 괜찮아야합니다. 그러나 나이트 빌드 서버와 함께 파자마 파티를 가지고 있지 않고 코드가 정상적으로 실행되었는지 확인할 수 있습니까?

더 나은 솔루션 : 출력을 기록하고 누군가가 아침에 그것을 보도록하십시오.

더 나은 솔루션 : 출력을 기록하고 그레를 grep하거나 무언가를 깨뜨리지 않으면 아무도 볼 필요가 없습니다.

최상의 솔루션 : 적절한 테스트 프레임 워크를 찾으십시오. 모든 종과 휘파람과 함께 무언가를 찾을 수 있기를 바랍니다. 우리의 경우 우리는 대신에 종과 휘파람을 피합니다. USB 경찰 사이렌 무언가가 깨질 때 그것은 꽤 흥미 롭습니다!

나는 이것을 직접하지 않았지만 실용적인 프로그래머 서적에서 언급 된 것을 보았다. 내가 "Nunit과 함께 C#의 실용 단위 테스트"라는 책을 착각하지 않았다면, 그들이이 책을 위해 이것을했다는 것을 언급합니다. 그래도 팟 캐스트 중 하나에서 언급했을 수도 있습니다.

그들은 책을 위해 지속적인 빌드 서버를 설정했다고 언급했습니다. 내가 실수하지 않으면 그들은 라텍스 나 다른 텍스트 기반 마크 업을 사용하여 책을 쓰고 책에서 마크 업 및 빌딩 및 단위 테스트 코드를 형식화하기위한 단계를 만들었습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top