[C#] Visual Studio에서 디버그 모드로 NUnit을 실행하려면 어떻게하나요?

저는 최근에 제가 작업해온 약간의 C #에 대한 테스트 프레임 워크를 구축하고 있습니다. 구성 요소를 테스트하기 위해 작업 공간 내에 NUnit이 설정되어 있고 새 프로젝트가 있습니다. Nunit (v2.4)에서 단위 테스트를로드하면 모두 잘 작동하지만 디버그 모드에서 실행하고 몇 가지 중단 점을 설정하는 것이 정말 유용 할 지점에 도달했습니다.

테스트 프로젝트의 ‘디버그’속성 변경을 제안하는 여러 가이드의 제안을 시도했습니다.

Start external program: C:\Program Files\NUnit 2.4.8\bin\nunit-console.exe
Command line arguments: /assembly: <full-path-to-solution>\TestDSP\bin\Debug\TestDSP.dll

거기에서 콘솔 버전을 사용하고 있지만 GUI 호출도 시도했습니다. 둘 다 디버깅을 시도하고 시작할 때 동일한 오류가 발생합니다.

Cannot start test project 'TestDSP' because the project does not contain any tests.

일반적으로 \ DSP.nunit을 Nunit GUI에로드하고 테스트가 진행되기 때문입니까?

문제는 VS가 자체 테스트 프레임 워크를 실행하기를 원한다는 것이므로 NUnit 테스트를 찾지 못하는 이유라고 생각하기 시작했습니다.

편집 : 테스트 픽스처에 대해 묻는 사람들에게 TestDSP 프로젝트의 .cs 파일 중 하나는 대략 다음과 같습니다.

namespace Some.TestNamespace
{
    // Testing framework includes
    using NUnit.Framework;

    [TestFixture]
    public class FirFilterTest
    {
        [Test]
        public void Test01_ConstructorTest()
        {
            ...some tests...
        }
    }
}

… 저는 C #과 NUnit 테스트 프레임 워크를 처음 접했기 때문에 중요한 정보를 놓쳤을 가능성이 있습니다 😉

최종 해결책 : 큰 문제는 제가 사용한 프로젝트였습니다. 당신이 선택하면 Other Languages -> Visual C# -> Test -> Test Project프로젝트 유형을 선택할 때 …, Visual Studio를 시도하고 내가 말할 수까지로로 자신의 테스트 프레임 워크를 사용합니다. 당신은 선택해야 정상적인 대신 C의 # 클래스 라이브러리 프로젝트를하고 나의 선택 대답의 지침 작동합니다.



답변

/ assembly 플래그없이 Jon을 시도하는 것과 동일한 기술을 사용합니다.

Start External Program: C:\Program Files\NUnit 2.4.8\bin\nunit.exe

Command line arguments: "<path>\bin\Debug\Quotes.Domain.Tests.dll"

TestDSP.dll에 모든 TestFixture가 포함되어 있습니까?

내 테스트 프로젝트가 솔루션의 시작 프로젝트가 아니기 때문에 테스트 프로젝트를 마우스 오른쪽 단추로 클릭하고 디버그-> 새 인스턴스 시작을 선택하여 테스트를 실행합니다.


답변

NUnit 테스트를 디버깅해야 할 때 nunit-agent.exe“Debug | Attach to Process”를 사용하여 NUnit GUI 애플리케이션에 연결하고 GUI에서 테스트를 실행하기 만하면 됩니다. 내 테스트 (또는 테스트중인 코드)의 모든 중단 점이 적중되었습니다. 내가 당신의 질문을 오해하고 있습니까, 아니면 그것이 당신에게 효과가 있습니까?


답변

다음과 같은 선을 제거하기 만하면됩니다.

<ProjectTypeGuids>
    {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
</ProjectTypeGuids>

프로젝트 파일에서. 이 줄은 기본적으로 VS.Net에 테스트 프로젝트이므로 “테스트 프로젝트를 시작할 수 없습니다”라고 알려줍니다. 참고로 여기에 첫 번째 Guid는 “테스트입니다”라고 말하고 두 번째 Guid는 “It ‘s C #”이라고 말합니다. 해당 Guid에 대한 정보 : http://www.mztools.com/Articles/2008/MZ2008017.aspx


답변

@Justin이 제공 한 답변 외에도 NUnit 2.6에 대한 자세한 내용이 있습니다.

NUnit 2.6을 사용하여 에이전트가 아닌 nunit.exe 또는 nunit-console.exe에 연결합니다. @Justin이 언급 한 구성은 약간 다릅니다. 아래는 nunit.exe.config의 예입니다 (nunit-console.exe.config의 경우 동일).

<startup useLegacyV2RuntimeActivationPolicy="true">
  <!-- Comment out the next line to force use of .NET 4.0 -->
  <supportedRuntime version="v2.0.50727" />
  <supportedRuntime version="v4.0.30319" />
</startup>

.NET 4 테스트 프로젝트의 경우 중단 점을 가져 오려면 주석에서 제안한대로 v2.0 행을 주석 처리하거나 제거해야합니다. 그렇게 한 후에는 .NET 4.0 테스트 프로젝트를 디버깅 할 수있었습니다.


답변

NUnit 2.4 이상을 사용하는 경우 SetUpFixture클래스에 다음 코드를 넣을 수 있습니다 . (이전 버전에서도이 작업을 수행 할 수 있지만에 해당하는 모든 작업을 수행 SetUpFixture하거나 테스트 자체에 복사해야합니다.)

[SetUpFixture]
public class SetupFixtureClass
{
    [SetUp]
    public void StartTesting()
    {
        System.Diagnostics.Debugger.Launch();
    }
}

어떤 Debugger.Launch()일은 당신이 NUnit과 내부 실행을 클릭 할 때 표시 할 수있는 다음과 같은 대화 상자가 원인이다.

JIT 디버거 대화 상자

그런 다음 프로젝트가 열린 상태에서 Visual Studio의 실행중인 인스턴스 (내 스크린 샷의 두 번째 인스턴스)를 선택하면 디버거가 연결되고 Visual Studio에 중단 점 또는 예외가 표시됩니다.


답변

Nunit 3.0.1 (VS2013을 사용하고 있습니다)에서 메인 메뉴> 테스트> Windows> 테스트 탐색기에서 엽니 다. 그런 다음 “테스트 탐색기”에서 테스트 케이스를 마우스 오른쪽 단추로 클릭하면 다음이 표시 될 수 있습니다.
여기에 이미지 설명 입력

도움이 되었기를 바랍니다.


답변

Visual Studio 용 플러그인 인 TestDriven.NET 설치

여기에서 단위 테스트 어셈블리를 마우스 오른쪽 단추로 클릭하고 테스트 실행을 클릭하여 전체 제품군을 실행하거나 TestFixture 클래스를 마우스 오른쪽 단추로 클릭하여 해당 클래스의 테스트 만 실행하거나 테스트 메서드를 마우스 오른쪽 단추로 클릭하여 해당 메서드 만 실행할 수 있습니다.

디버그 모드에서 테스트를 중단해야하는 경우 디버거로 테스트하는 옵션도 있습니다.