首页 > 解决方案 > 独立运行单元测试(.net core)

问题描述

有谁知道我们可以使用什么类型的属性来独立运行所有单元测试?例如,在下面我们使用了 [Fact] 属性,但它不会使测试独立运行。是否有任何其他类型属性可用于在每个测试开始时初始化数据并使测试彼此独立运行?如何在 Visual Studio 代码中独立运行单元测试?

namespace Tests
{
   
    public class TestCategory
    {
        
        //Test Get() Method
        [Fact]
        public void Get_WhenCalled_ReturnsAllCategories()
        {
            //Arrange
            //create _options
            var _Options = new DbContextOptionsBuilder<MyContext>()
            .UseInMemoryDatabase("Data Source=MyCart.db").Options;
            var Context = new MyContext(_Options);
            Context.CategoryTestData();//We make sure that dummy data has been added
            var Controller = new CategoryController(Context);//pass context inside controller

            //Act
            var Results = Controller.Get();//call Get() function inside Category controller

            //Assert
            Assert.NotNull(Results);

        }

        //Test GetById() Method
        //When valid Id is passed
        [Fact]
        public void GetById_ExistingIntIdPassed_ReturnsOkResult()
        {
            //Arrange
            var _Options = new DbContextOptionsBuilder<MyContext>()
            .UseInMemoryDatabase("Data Source=MyCart.db").Options;
            var Context = new MyContext(_Options);//pass _Options into context
            var Controller = new CategoryController(Context);//pass Context inside controller
        
            //Act
            var OkResult = Controller.GetById(1);//1 is valid Id 
        
            //Assert
            Assert.IsType<OkObjectResult>(OkResult.Result);
        
        }
    }
}

标签: c#.netunit-testingxunit

解决方案


如果您向您的类添加构造函数,您可以设置“初始化”数据等。

没有[Attribute],如果你知道其他测试框架,你可以看看一个比较列表,看看[Attributes]与 xUnit 的比较。

当您查看该页面上的 * Note 3时,您会看到它描述了IClassFixture<T>可用于在测试之间共享上下文的接口的使用

对于并行测试,您可以在xUnit的配置中对其进行配置。


推荐阅读