c# - 独立运行单元测试(.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);
}
}
}
解决方案
如果您向您的类添加构造函数,您可以设置“初始化”数据等。
没有[Attribute],如果你知道其他测试框架,你可以看看一个比较列表,看看[Attributes]与 xUnit 的比较。
当您查看该页面上的 * Note 3时,您会看到它描述了IClassFixture<T>
可用于在测试之间共享上下文的接口的使用
对于并行测试,您可以在xUnit的配置中对其进行配置。
推荐阅读
- python - 为什么 numpy fft 返回不正确的相位信息?
- css - 在 React 中更改样式表
- jquery - 使用 Firebase 创建新闻提要应用程序
- html - segment overflow the container in semantic ui?
- git - SourceTree / git add - 无法暂存修改过的文件
- c++ - 特征模板函数和维度
- jersey - JAX-RS:如何在启动时运行方法(没有 servlet)
- reactjs - React Router - 在组件中有条件地返回 404
- javascript - 向被索引的对象添加新消息
- php - 在 for 循环中对自定义字段的值进行排序