2017-02-24 2 views
0

Nunit TestFixtureData, 테스트 픽스처가 있습니다.
Visual Studio 테스트 탐색기에서 테스트가 실행되지 않음으로 표시됩니다. 나는 그들이 일하도록하고 싶다. 빨강/초록색 테스트로 실행하고 싶습니다.Nunit TestFixtureData가 테스트를 실행하지 않습니다.

나는 테스트가 실행되지 않은 Foo Factory를 실행하지 않고 이러한 테스트를 실행하고 작동하지 않습니다.

Test 및 TestCase가있는 다른 TestFixtureData가 있는데 제대로 작동합니다.

로직을 테스트에 합격하기를 원하지 않습니다. 그게 무엇인지 알아요.

테스트 탐색기에서 테스트를 프로파일 링 할 수 있으며 "경로에 잘못된 문자가 표시됩니다." 출력에. 관련성이 있는지 확실하지 않습니다.

/// <summary> 
/// This is a TestFixtureData test. See https://github.com/nunit/docs/wiki/TestFixtureData for more information 
/// </summary> 
[TestFixtureSource(typeof(FooTest), "FixtureParms")] 
public class FooTestFixture 
{ 
    private readonly Foo foo; 
    private readonly Guid fooId; 

    public FooTestFixture(Foo foo, Guid fooId) 
    { 
     this.foo = foo; 
     this.fooId = fooId; 
    } 

    [Test] 
    public void FooId_IsSet() 
    { 
     //Arrange 
     //Act 
     var value = foo.FooId; 
     //Assert 
     Assert.AreNotEqual(Guid.Empty, value); 

    } 


    [TestCase("A")] 
    [TestCase("B")] 
    [TestCase("C")] 
    public void ActivityList_Contains(string activity) 
    { 
     //Arrange 
     //Act 
     var value = foo.ActivityList; 
     //Assert 
     Assert.IsTrue(value.Contains(activity)); 
    } 

} 

public class FooTest 
{ 
    public static IEnumerable FixtureParms 
    { 
     get 
     { 
      var fooId = Guid.NewGuid(); 
      var foo = new Foo() { FooId = fooId }; 
      yield return new TestFixtureData(FooFactory.Edit(foo), fooId); 
      yield return new TestFixtureData(FooFactory.Create(fooId), fooId); 
      yield return new TestFixtureData(foo, fooId); 

     } 
    } 
} 

FooFactory를 사용하면 간단합니다. 테스트에서 실패하지만 테스트가 실행되지 않는다는 것을 알고 있습니다.

public static Foo Create(Guid fooId) 
    { 
     return new Foo(); 
    } 

    public static Foo Edit Edit(Foo foo) 
    { 
     return new Foo(); 
    } 
+0

코드가 나에게 적합하지 않습니다. FooTestFixture의 생성자는 Foo와 guid를 취하지 만, TestFixtureAttribute에 Type과 문자열을 전달합니다. NUnit은이 클래스를 전혀 사용할 수 없다고 결정하고 무효로 표시합니다. 테스트 탐색기는 클래스 (메소드 만)에 대한 정보를보고하지 않기 때문에 오류가 실행되는 동안 사라질 수 있습니다. NUnit 콘솔 러너로 실행하면 아마도 조명기가 무효라고 말했을 것입니다. – Charlie

답변

0

Charle이 나에게 지적 해 주셔서 감사합니다.

NUNIT 다음, 문자열로 전달 그들에게 내가 만든 그래서 변경을 사용하기 전에 그들에게 GUID를 만들기 위해 속성으로 GUID를하고 최선을 좋아하지 않는에게

public class FooTest 
{ 
public static IEnumerable FixtureParms 
{ 
    get 
    { 
     var fooId = "152b1665-a52d-4953-a28c-57dd4483ca35"; 
     var fooIdGuid = new Guid(fooId); 
     var foo = new Foo() { FooId = fooIdGuid }; 
     yield return new TestFixtureData(FooFactory.Edit(foo), fooId); 
     yield return new TestFixtureData(FooFactory.Create(fooIdGuid), fooId); 
     yield return new TestFixtureData(foo, fooId); 

    } 
} 

}

시험이었다 정착물이되었다

public FooTestFixture(Foo foo, string fooId) 
{ 
    this.foo = foo; 
    this.fooId = new Guid(fooId); 
} 
관련 문제