2015-12-09 209 views
1

假设我在要构造单元测试的类构造函数中有一些逻辑,如果我使用xUnit.net和每种方法的嵌套测试类?如何在使用嵌套测试类时对单元测试构造函数进行单元测试

using Xunit; 

public class MyClass 
{ 
    public MyClass() 
    { 
     // Some logic to test 
    } 

    public int GetResult() 
    { 
     return 123; 
    } 
} 

public class MyClassFacts 
{ 
    // How to test MyClass constructor? 

    // Nested classes to test each of MyClass' methods 
    public class GetResult 
    { 
     [Fact] 
     public void IsCorrect() 
     { 
      var myClass = new MyClass(); 
      int result = myClass.GetResult(); 
      Assert.Equal(123, result); 
     } 

     // Other tests for MyClass.GetResult()... 
    } 
} 
+0

所以你需要一个失败的测试 – quamrana

+0

@quamrana我不知道你是什么意思? –

回答

1

你已经在你的IsCorrect()测试来测试它在技术上,但如果你想要一个明确的测试:

using Xunit; 

public class MyClass 
{ 
    public MyClass() 
    { 
     // Some logic to test 
    } 

    public int GetResult() 
    { 
     return 123; 
    } 
} 

public class MyClassFacts 
{ 
    [Fact] 
    public void Ctor() 
    { 
     var myClass = new MyClass(); 
     Assert.NotNull(myClass); 
     // Any other asserts you require 
    } 

    // Nested classes to test each of MyClass' methods 
    public class GetResult 
    { 
     [Fact] 
     public void IsCorrect() 
     { 
      var myClass = new MyClass(); 
      int result = myClass.GetResult(); 
      Assert.Equal(123, result); 
     } 

     // Other tests for MyClass.GetResult()... 
    } 
} 
+0

构造函数测试是否应该像嵌套类一样进入嵌套类(请参阅'MyClass.GetResult')?例如:'public class Ctor {[Fact] public void CtorTest(){}}' –

+0

这真的取决于你,但基于你目前的结构我会说是。这将使其一致。如果您正在寻找构建测试的好方法,请阅读http://haacked.com/archive/2012/01/02/structuring-unit-tests.aspx/,其中提供了一些很好的建议一些评论。 – timothyclifford

+0

谢谢,那实际上是让我感兴趣的文章,这种方式首先构建我的测试:D –

相关问题