테스트 방법이 결정적이지 않습니다 : 테스트가 실행되지 않았습니다. 오류?


172

테스트 수업이 있고 아래에 테스트 수업에서 샘플 테스트를 게시했습니다.

namespace AdminPortal.Tests.Controller_Test.Customer
{
    [TestClass]
    public class BusinessUnitControllerTests
    {
        private IBusinessUnitRepository _mockBusinessUnitRepository;
        private BusinessUnitController _controller;

        [TestInitialize]
        public void TestInitialize()
        {
            _mockBusinessUnitRepository = MockRepository.GenerateMock<IBusinessUnitRepository>();
            _controller = new BusinessUnitController(_mockBusinessUnitRepository);
        }

        [TestCleanup]
        public void TestCleanup()
        {
            _mockBusinessUnitRepository = null;

            _controller.Dispose();
            _controller = null;

        }

        #region Index Action Tests
        [TestMethod]
        public void Index_Action_Calls_GetAllBusinessUnit()
        {
            _mockBusinessUnitRepository.Stub(x => x.GetAllBusinessUnit());

            _controller.Index();

            _mockBusinessUnitRepository.AssertWasCalled(x=>x.GetAllBusinessUnit());
        }
    }
}

프로젝트를 실행하면 다음 화면이 나타납니다. 여기에 이미지 설명을 입력하십시오

참조를 확인했으며 테스트 프로젝트에는 기본 프로젝트에 대한 참조가 있습니다. 왜 테스트가 실행되지 않거나 결정적이지 않았다고 생각하십니까?

편집 1 :

여기 에서 게시물을보고 테스트 설정의 기본 프로세서 아키텍처를 X64로 변경했지만 여전히 작동하지 않습니다.


3
ReSharper에서 알려진 문제입니다. 몇 가지 잠재적 인 솔루션은 여기에 있습니다 : stackoverflow.com/questions/12191352/...은 .
Chris Mantle

3
깨끗하고 재건 했습니까? VS2010에는 어셈블리를 업데이트하고 다시 빌드 한 후 어셈블리에 대한 참조가 손실되는 이상한 점이 있습니다.
마크 월시

@ChrisMantle 확인하고 기본 프로세서 아키텍처를 변경했지만 여전히 작동하지 않습니다.
Cybercop

@MarkWalsh VS2012를 사용하고 있습니다. 나는 당신이 말한대로 여전히 솔루션을 청소하고 다시 만들었지 만 여전히 작동하지 않습니다.
Cybercop

답변:


133

위의 옵션 중 어느 것도 누군가에게 효과가없는 경우 테스트 프로젝트에서 누락 된 nuget 패키지로 인해 App.Config의 손상된 항목을 확인 하여이 오류의 인스턴스를 수정했습니다.


5
여기서도 같은 문제입니다. R #이 오류를 일으키는 경우 (구성 시스템 초기화 오류) 테스트가 실행되지 않은 이유가 분명합니다.
Geoffrey Hudik

5
고마워, 나는 실수로 구성 위에 appsettings을 넣고 적절한 위치로 옮기면 작동합니다.
IBMer

3
nuget을 통해 specflow를 추가하고 App.config에 항목을 삽입했습니다. 그것은 모든 문제를 일으켰습니다. 새 App.config를 만들고 참조를 다시 추가했는데 수정되었습니다. 정보 주셔서 감사합니다.
비니

이 게시물이 처음 작성된 후 거의 2 년이 지난 후에도 여전히 수정 가능한 것으로 보입니다 (VS 2015 및 ReSharper 9.2를 사용하고 있습니다).
Steven D.

2
빙고! 고마워 크리스. 제 경우에는에 maching 섹션 이름이없는 log4net 섹션이었습니다 <configSections>.
datps

47

나에게는 다소 실망 스럽지만 적어도 내 경우에 대한 해결책을 찾았습니다.

TestMethod가 비동기 인 경우 무효가 될 수 없습니다. 반드시 Task를 반환해야합니다.

그것이 누군가를 돕기를 바랍니다 :)


37

나는 resharper와 같은 문제가 있었고 옵션을 변경 하여이 오류를 수정했습니다.

Resharper => 옵션 => 도구 => 단위 테스트

방금 "테스트중인 그림자 복사 어셈블리"옵션을 선택 해제해야했습니다.


2
이것은 다른 수정 프로그램을 살펴본 후 나를 위해 분류했습니다. VS 2013 및 R # v8.1을 사용하고 있습니다.
Spikeh

10
나를 위해 작동하지 않았다, 나는 VS2015 w / Reshaper 10을 사용하고 있습니다.
Nemeas

이것은 NETCore 테스트 프로젝트에서 VS2017 및 Resharper Ultimate 2017.2.2로 작업하는 데 도움이되었습니다.
Tasker

나를 위해 일했고 지금 테스트를 위해 명확한 빌드를 할 필요가 없습니다. Elias에게 감사합니다.
PhoenixPan

22

Resharper 문제였습니다. Resharper 옵션-> 도구-> MSTEST에서 레거시 러너 사용을 선택 취소했으며 이제 작동합니다.


61
Tools-> Unit Testing-> MsTest에 해당 옵션이 없습니다. (Resharper 9.2.)
cederlof

R # 2017.2에서도 그러한 옵션을 사용하지 않았습니다.
realsonic

나를 위해 옵션은 도구-> 단위 테스트-> MSTest 및 unchecking이 도움이되었습니다.
Marcel

15

나는이 문제를 겪고 있었고 여기 의이 문제 와 같은 것으로 판명되었습니다 . 이 답변은 저에게 문제를 해결했습니다 .

  1. "실행시 시작 프로젝트 및 종속성 만 빌드"(옵션-> 프로젝트 및 솔루션-> 빌드 및 실행)를 선택 취소하십시오.
  2. Configuration Manager에서 시작 프로젝트와 테스트 프로젝트 모두 "빌드"를 확인했는지 확인하십시오.

두 번째 로이 문제를 겪었을 때 테스트가있는 프로젝트의 파일 경로에 앰퍼샌드가 있었기 때문입니다. ReSharper의 테스트 러너에서는 잘 작동하지만 dotCover에서는 작동하지 않습니다. 파일 경로에서 앰퍼샌드를 제거하십시오.

이것은 dotCover 의 확인 된 버그 입니다.


1
나를 위해 일했다. VS2017 with ReSharper 2017.1.3 :-)
Lars Holdgaard

12

나를 위해 단순히 솔루션을 청소하고 다시 작성하면 해결되었습니다.


Git에서 브랜치를 변경할 때 실수로 프로젝트 파일의 변경 사항을 되돌 렸습니다. 클래스를 마우스 오른쪽 버튼으로 클릭하여 테스트를 실행하려고 할 때 (코드 창이 여전히 열려 있음) 솔루션의 일부가 아니기 때문에 실행되지 않았습니다.
mortb

12

나에게 문제는 예기치 않은 전원 부족으로 인해 손상된 NUnit / ReSharper 설정 XML 파일 이었습니다.

오류를 식별하기 위해이 명령으로 Visual Studio를 시작했습니다 .

devenv.exe /ReSharper.LogFile C:\temp\resharper.log /ReSharper.LogLevel Verbose

파일을 조사한 결과 다음 예외가 드러났습니다.

09:45:31.894 |W| UnitTestLaunch                | System.ApplicationException: Error loading settings file
System.ApplicationException: Error loading settings file ---> System.Xml.XmlException: Root element is missing.
   at System.Xml.XmlTextReaderImpl.Throw(Exception e)
   at System.Xml.XmlTextReaderImpl.ParseDocumentContent()
   at System.Xml.XmlLoader.Load(XmlDocument doc, XmlReader reader, Boolean preserveWhitespace)
   at System.Xml.XmlDocument.Load(XmlReader reader)
   at System.Xml.XmlDocument.Load(String filename)
   at NUnit.Engine.Internal.SettingsStore.LoadSettings()
   --- End of inner exception stack trace ---
   at NUnit.Engine.Internal.SettingsStore.LoadSettings()
   at NUnit.Engine.Services.SettingsService.StartService()
   at NUnit.Engine.Services.ServiceManager.StartServices()
   at NUnit.Engine.TestEngine.Initialize()
   at NUnit.Engine.TestEngine.GetRunner(TestPackage package)
   at JetBrains.ReSharper.UnitTestRunner.nUnit30.BuiltInNUnitRunner.<>c__DisplayClass1.<RunTests>b__0()
   at JetBrains.ReSharper.UnitTestRunner.nUnit30.BuiltInNUnitRunner.WithExtensiveErrorHandling(IRemoteTaskServer server, Action action)

이것은 아닙니다 테스트 프로젝트의 app.config !

빠른 인터넷 검색 주위의 원인으로 다음과 같은 파일을 확인했다 :

%LOCALAPPDATA%\NUnit\Nunit30Settings.xml

존재했지만 비어있었습니다. 삭제하고 Visual Studio를 다시 시작하면 문제가 해결되었습니다.

(Visual Studio Professional 2017 v15.3.5 및 ReSharper 2017.2.1 사용).


12

Resharper Ultimate 2017.2의 2017 업데이트 3 에서이 문제에 직면했습니다.

컴퓨터를 다시 시작하거나 다시 시작할 수 없습니다.

다음과 같이 캐시를 지워서 문제를 해결했습니다.

    Resharper ->options-> Environment ->click the button 'Clear caches'

최신 정보:

테스트 창의 오른쪽 상단에 "오류"(Resharper 2018에서 찾음) 버튼이 있습니다.

오류 버튼을 클릭하면 문제 해결에 도움이되는 오류 메시지가 표시됩니다.

문제의 근본을 추적하려면 로그 모드에서 Visual Studio를 실행하십시오. 2017 년과 비교하여 다음 명령을 실행하십시오.

      devenv /ReSharper.LogFile C:\temp\log\test_log.txt /ReSharper.LogLevel Verbose

테스트를 실행하십시오.

test_log.txt 로그 파일을 검토하고 파일에서 'error'를 검색하십시오.

로그 파일은 해결할 수있는 오류를 찾거나 로그 파일 관련 문제 를 Resharper 기술 지원 팀에 보낼 수있는 큰 도움이됩니다 .


7

방금이 문제를 해결했습니다. 그러나이 스레드의 솔루션 중 아무것도 작동하지 않았습니다. 여기 내가 한 일이 있습니다 ...

R #은 왜 실패했는지에 대해 자세히 설명하지 않았기 때문에 내장 VS2013 테스트 러너를 사용해보기로 결정했습니다. 테스트가 실행되지 않은 동일한 동작을 경험했습니다. 그러나 출력 창을 보면 마침내 오류 메시지가 나타납니다.

실행기 'executor : // mstestadapter / v1'을 호출하는 중에 예외가 발생했습니다. 오브젝트 참조가 오브젝트의 인스턴스로 설정되지 않았습니다.

이것은 나를 다른 스레드로 이끌었습니다. 솔루션 . 나를 믿어, 나는 그 문제가 무엇인지 결코 추측하지 않았을 것이다.

최근 NuGet 패키지를 만드는 동안 AssemblyInfo.cs 파일을 약간 변경했습니다. "en"의 어셈블리 문화권 값 지정을 포함한 변경 중 하나입니다.

나는 이것을 바꿨다.

[assembly: AssemblyCulture("")] 

이에:

[assembly: AssemblyCulture("en")]`. 

그거였다! 그것이 내 단위 테스트를 설명 할 수 없었습니다. 그러나 여전히 이유를 이해하지 못합니다. 그러나 적어도 일이 다시 작동하고 있습니다. 이 변경 사항을 되 돌리면 (즉, 문화를 ""로 다시 설정) 테스트가 다시 시작되었습니다.

누군가를 도울 수 있기를 바랍니다.


1
어셈블리 문화를 변경하고 R #에서 테스트 실행을 중지했습니다.
Valentine Zakharenko

감사합니다! 출력 창을 확인하면 내 문제가 풀 렸으며 클래스는 공개되지 않았습니다!
Jony Feldman

7

필자의 경우 [Test]방법은 단지 private이었다. 부끄러움


1
이상하게도 ReSharper는 저의 [테스트] 방법이 비공개라고 불평했습니다. 새로운 기능이어야합니다.
Kevin B Burns

7

내 문제는 Nget을 nuget과 함께 설치했다는 것입니다. 또한 필요한 NUnit3TestAdapter를 설치하지 않았습니다.

Install-Package NUnit3TestAdapter

이것은 실제 문제에 대한 단서를 제공하는 실망스러운 문제 중 하나입니다!
벤 파워

6

내 경우에는 app.config에서 연결 문자열을 복사하는 동안 실수 한 것입니다. configSections 태그 안에 넣었습니다!

그 사실을 깨닫기까지 시간이 걸렸습니다 ... 감사하지만 VS 인텔리 센스 .. 또는 더 선명합니까?


내 경우에는 구성 파일이 잘못 변경 되었기 때문에
evgenyl

내 문제는 잘못된 Git 충돌 해결으로 해결 된 구성 파일에 헤드 변경 정보가
남음

거의 같은 일이 일어났습니다. 중복 appSettings 섹션을 제거하고 연결 문자열을 원래 appSettings로 이동했을 때 중복 appSettings 섹션에 연결 문자열을 추가했습니다.
Sirar Salih

손상된 app.config에 대한 답변은 첫 번째 stackoverflow.com/a/21386881/52277
Michael Freidgeim

5

나는 비슷한 문제가 있었다. VS 2010, c # CLR 2 Nunit 2.5.7, 그냥 빌드> VS의 깨끗한 솔루션 으로이 문제를 해결하는 데 도움이되었습니다.


5

내 경우에는을 반환하는 비동기 테스트 방법을 만들었습니다 void. 의 반환 Task대신에이 void문제를 해결했다.


4

최근에 DLL 종속성을 추가 했습니까? ... 나처럼

방금 동일한 문제가 발생하여 테스트 출력 창이나 다른 곳에서 실마리를 얻지 못하는 것이 매우 격렬했습니다.

그 원인은 매우 어리 석었습니다. 하루 프로젝트에 추가 외부 DLL에 의존하기 전날을 추가했으며 변경 후 주 프로젝트 앱이 실제로 빌드되고 올바르게 실행되었습니다. 그러나 내 단위 테스트는 기본 앱에 대한 자매 프로젝트에 있으므로 DLL이 호출 된이 변경된 하위 프로젝트에 너무 의존적입니다 ... 그러나 테스트 프로젝트의 런타임 위치는 기본 앱의 위치가 아닙니다! 따라서 누락 된 DLL을 테스트 런타임 디렉토리로 복사하도록 빌드를 변경하면 문제가 해결되었습니다.


4

ReSharper 및 Moq의 MSpec 확장 기능이있는 VS2013, ReSharper 9.1을 사용하고 있습니다. 같은 "결론되지 않은"오류가 발생했습니다.

Moq의 Mock 중 하나가 초기화되지 않았으며 선언 만되었습니다. 모든 테스트를 다시 시작했습니다.


4

내 경우에는 UnitTests 프로젝트 빌드가 단순히 꺼진 '릴리스'모드로 인해이 오류가 발생했습니다. '디버그'모드로 다시 전환하면 문제가 해결되었습니다.

ReSharper가 UnitTests 라이브러리를 전혀 찾을 수없는 경우 아무 말도 할 수 없다는 것이 정말 놀랍습니다. 정말 부끄러운 일입니다.)

누군가에게 도움이되기를 바랍니다.


4

필자의 경우 새 프로젝트를 추가 한 후 솔루션 내의 일부 테스트 프로젝트 내의 모든 테스트가 실행되지 않았습니다. ReSharper 2017.1.2와 함께 VS 2017 사용하기

우선, 문제가 ReSharper와 관련이 있다고 가정하고 시간을 낭비하지 않아야합니다. Unit Test Explorer를 포함한 단위 테스트 기능을 사용하는 경우 ReSharper에 문제가 있다고 생각하기 쉽습니다 . 테스트 메뉴 에서 Visual Studio의 테스트 탐색기를 열고 모두 실행 "을 시도 하십시오 .이 작업의 추가 이점은 출력 창에 올바른 방향을 지시 할 수있는 오류 메시지가 표시된다는 것입니다. 동일한 테스트 세트가있는 경우 실행되지 않으면 문제가 ReSharper가 아닌 Visual Studio에 있다고 가정하는 것이 안전합니다.

나는 삭제하고 하나 재 - 추가 결국 활성 솔루션 플랫폼 , 어떤 CPU를 에, 구성 관리자 . 이렇게하면 변경 사항을 저장하고 솔루션을 다시 연 후에 모든 테스트가 다시 시작되었습니다.

새 프로젝트를 추가 할 때 솔루션 파일에 예기치 않은 구성 항목이 있다고 생각하고 플랫폼 중 하나를 다시 작성하여 자체 수정했습니다. 나는 diffing을 시도했지만 문제를 일으킨 변경 사항을 말하기가 어려웠습니다.


필자의 경우 <AppSettings> 대신 app.config <AppConfig>에 바보 같은 오타가있었습니다. 저는 ReSharper를 좋아하지만 실제로는 오류 메시지를 처리해야합니다!
MichaelMilom

4

내 테스트 프로젝트에이 문제가 발생하는 사람들을 위해 .NET Core 2.0에서 Visual Studio 2017 Community (v15.3 3). 나는 또한이 버그를 사용했다 JetBrains ReSharper Ultimate 2017.2 Build 109.0.20170824.131346- 내가 게시 한 버그 가있다.

JetBrains는 처음부터 새로운 테스트 프로젝트를 만들어 재현하는 것이 좋습니다. 내가 그렇게하고 테스트가 제대로 작동했을 때 문제의 원인을 발견했습니다.

  • *.csproj파일 에서 이것을 제거하십시오 .
  • Service Include="{82a7f48d-3b50-4b1e-b82e-3ada8210c358}"

내가 그렇게했을 때-테스트가 잘 작동하기 시작했습니다.


드미트리, 고맙습니다. 도움이되었습니다. 이 서비스가 무엇인지 설명 할 수 있습니까?
블라디미르 멜 레크


3

VS2010, NUnit 2.6.3 (내부 ReSharper가 2.6.2를 사용하고 있다고 말하지만), ReSharper 7.7.1 및 NCrunch 2.5.0.12를 사용하고 있으며 동일한 "... 결론이 결정적이지 않습니다 ..." NCUnit은 NUnit과 함께 모든 것이 정상이라고 말했습니다. 오늘날 대부분의 NUnit & NCrunch는 어떤 테스트가 만족스럽고 리팩토링이 필요한지에 대해 동의하고 있었고, 아직 이해하지 못하는 일이 발생했습니다 .NCrunch는 테스트에 실패했다고 말했지만 잠시 동안 테스트에 실패했습니다. 패스), 그들이 모두 작동하고 있다고 결정하고 NUnit은 동일한 메시지 "..test is unconclusive ..."를 제외하고 모든 테스트에 대해 불평하기 시작했습니다 .NUnit은 계속해서 패스를 통해 한 단계 씩 나아갈 수있었습니다. "결정적이지 않음"으로 표시).

위의 제안 중 몇 가지를 시도해 보지 않고 마침내 VS2010을 닫고 솔루션을 다시 열었습니다. Voila, 이제 모든 테스트에 다시 만족하고 NCrunch & NUnit도 동일한 결과를보고합니다. 불행히도 무엇이 동기화되지 않도록 변경했는지는 모르지만 VS2010을 닫았다가 다시 열면 문제가 해결 된 것으로 보입니다.

어쩌면 다른 사람 이이 문제를 겪고이 간단한 (실제 수정 사항이 무엇인지 모르기 때문에 궁극적으로 불만족스러운 경우) 솔루션을 사용할 수 있습니다.


3

나는이 같은 문제가 있었다. 범인은 내 프로젝트 빌드 설정과 호환되지 않는 외부 참조였습니다. 해결하려면 프로젝트-> 속성-> 빌드-> 플랫폼 대상-> 모든 CPU에서 x86으로 변경을 마우스 오른쪽 버튼으로 클릭하십시오.

내가 작업했던 특정 * .dll은 System.Data.SQLite입니다. 해당 특정 * .dll은 32 비트 작동을 위해 하드 코딩됩니다. "모든 CPU"설정이 64 비트로로드하려고했습니다.


플랫폼 목표 불일치는 동일한 솔루션 내의 다른 프로젝트에 대한 참조에서도 발생할 수 있습니다.
Chaquotay

3

내 해결책 :

NUnit 3.2.0에는 Resharper와 관련된 몇 가지 문제가 있습니다. 2.6.4로 다운 그레이드하십시오.

update-package nunit -version 2.6.4

3

필자의 경우 내 테스트 방법은 비공개였으며 공개로 변경했으며 효과가있었습니다.


3

App.Config 파일 누락 (손상되지 않음)으로 인해 발생합니다. 새로운 추가 (추가-> 새 항목 ...-> 응용 프로그램 구성 파일)가 수정되었습니다.


3

NUnit 3.5와 Resharper 9.2 사이의 호환성 버전과 관련이 있습니다 .NUnit 3.5에서 2.6.4로 다운 그레이드하여 해결 되었기 때문입니다. 그것은 나를 위해 일했다. 행운을 빕니다.


3.6.1에 대해 테스트 어셈블리를 컴파일했으며 기본 테스트 어셈블리는 3.7.1에 대해 컴파일되었습니다. 3.6.1로 다운 그레이드되었으며 이제 모든 것이 좋습니다.
Tom

ReSharper 2017.3.2 및 NUnit 3.11의 경우였습니다. NUNIT에 대한 주석 참조 github.com/nunit/nunit/issues/3086#issuecomment-466988760
Puterdo 보레 이토

3

를 사용하는 경우 패키지 xUnit설치 문제를 해결했습니다 xunit.running.visualstudio. (현재 xUnit 2.3.1및 사용 VS17 Enterprise 15.3.5)


3

NUnit 프레임 워크를 사용하여 테스트를 실행하는 데 동일한 문제가 있습니다. "결론되지 않음 : 테스트가 실행되지 않음"Visual Studio 2017 15.5.6

ReSharper Ultimate 2017.3.3 빌드 111.0.20180302.65130

SOLVED Microsoft.NET.Test.Sdk에 프로젝트 종속성 추가


내 경우에는 도움이되지 않았다
Dmitry Avtonomov

2

테스트 실행을 서두르는 사람은 VS 2017 테스트 탐색기를 사용하여 테스트를 실행해야했습니다.

여기에 이미지 설명을 입력하십시오

여기에 이미지 설명을 입력하십시오


2

이 오류는 Visual Studio 2017 및 resharper 버전 2018.2.3에서 발생했지만 수정 사항은 Visual Studio 2019 버전에 적용됩니다.

Resharper에서 테스트를 수행하기위한 수정은 작성 당시 최신 Resharper (2019.2.1) 버전으로 업데이트하기위한 것입니다.


1

나는 똑같은 문제가 있었고 아무것도 도움이되지 못했습니다.

결국 나는 단위 프로젝트와 단위 테스트 프로젝트의 네임 스페이스가 일치하지 않는 것을 보았습니다.

내 단위 프로젝트의 네임 스페이스는 unit.project이고 테스트 프로젝트의 이름은 unit.project.tests이지만 테스트의 기본 네임 스페이스는 단위와 동일하며 둘 다 unit.project입니다.

네임 스페이스를 다른 프로젝트 (각 프로젝트마다 하나의 네임 스페이스)로 업데이트하면 모든 것이 작동했습니다!


네, 같은 문제가있었습니다. 아이디어는 테스트 프로젝트와 대상 프로젝트를 쉽게 액세스 할 수 있도록 동일하게 만드는 것이지만 테스트 러너를 조여 OP에서이 문제를 발생시킵니다.
atconway
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.