Visual Studio中的xUnit未运行

8aqjt8rx  于 2023-11-21  发布在  其他
关注(0)|答案(1)|浏览(296)

我是新的xUnit与.NET核心。我试图运行测试的一个示例项目在VS 2022。这是我的测试类:

  1. using DeskBooker.Core.Domain;
  2. using DeskBooker.Core.Processor;
  3. using Microsoft.AspNetCore.Mvc;
  4. using Microsoft.AspNetCore.Mvc.RazorPages;
  5. using Moq;
  6. using System;
  7. using System.Collections.Generic;
  8. using Xunit;
  9. namespace DeskBooker.Web.Pages
  10. {
  11. public class BookDeskModelTests
  12. {
  13. private Mock<IDeskBookingRequestProcessor> _processorMock;
  14. private BookDeskModel _bookDeskModel;
  15. private DeskBookingResult _deskBookingResult;
  16. public BookDeskModelTests()
  17. {
  18. _processorMock = new Mock<IDeskBookingRequestProcessor>();
  19. _bookDeskModel = new BookDeskModel(_processorMock.Object)
  20. {
  21. DeskBookingRequest = new DeskBookingRequest()
  22. };
  23. _deskBookingResult = new DeskBookingResult
  24. {
  25. Code = DeskBookingResultCode.Success
  26. };
  27. _processorMock.Setup(x => x.BookDesk(_bookDeskModel.DeskBookingRequest))
  28. .Returns(_deskBookingResult);
  29. }
  30. [Theory]
  31. [InlineData(1, true)]
  32. [InlineData(0, false)]
  33. public void ShouldCallBookDeskMethodOfProcessorIfModelIsValid(
  34. int expectedBookDeskCalls, bool isModelValid)
  35. {
  36. // Arrange
  37. if (!isModelValid)
  38. {
  39. _bookDeskModel.ModelState.AddModelError("JustAKey", "AnErrorMessage");
  40. }
  41. // Act
  42. _bookDeskModel.OnPost();
  43. // Assert
  44. _processorMock.Verify(x => x.BookDesk(_bookDeskModel.DeskBookingRequest),
  45. Times.Exactly(expectedBookDeskCalls));
  46. }
  47. [Fact]
  48. public void ShouldAddModelErrorIfNoDeskIsAvailable()
  49. {
  50. // Arrange
  51. _deskBookingResult.Code = DeskBookingResultCode.NoDeskAvailable;
  52. // Act
  53. _bookDeskModel.OnPost();
  54. // Assert
  55. var modelStateEntry =
  56. Assert.Contains("DeskBookingRequest.Date", _bookDeskModel.ModelState);
  57. var modelError = Assert.Single(modelStateEntry.Errors);
  58. Assert.Equal("No desk available for selected date", modelError.ErrorMessage);
  59. }
  60. [Fact]
  61. public void ShouldNotAddModelErrorIfDeskIsAvailable()
  62. {
  63. // Arrange
  64. _deskBookingResult.Code = DeskBookingResultCode.Success;
  65. // Act
  66. _bookDeskModel.OnPost();
  67. // Assert
  68. Assert.DoesNotContain("DeskBookingRequest.Date", _bookDeskModel.ModelState);
  69. }
  70. [Theory]
  71. [InlineData(typeof(PageResult), false, null)]
  72. [InlineData(typeof(PageResult), true, DeskBookingResultCode.NoDeskAvailable)]
  73. [InlineData(typeof(RedirectToPageResult), true, DeskBookingResultCode.Success)]
  74. public void ShouldReturnExpectedActionResult(Type expectedActionResultType,
  75. bool isModelValid, DeskBookingResultCode? deskBookingResultCode)
  76. {
  77. // Arrange
  78. if (!isModelValid)
  79. {
  80. _bookDeskModel.ModelState.AddModelError("JustAKey", "AnErrorMessage");
  81. }
  82. if (deskBookingResultCode.HasValue)
  83. {
  84. _deskBookingResult.Code = deskBookingResultCode.Value;
  85. }
  86. // Act
  87. IActionResult actionResult = _bookDeskModel.OnPost();
  88. // Assert
  89. Assert.IsType(expectedActionResultType, actionResult);
  90. }
  91. [Fact]
  92. public void ShouldRedirectToBookDeskConfirmationPage()
  93. {
  94. // Arrange
  95. _deskBookingResult.Code = DeskBookingResultCode.Success;
  96. _deskBookingResult.DeskBookingId = 7;
  97. _deskBookingResult.FirstName = "Thomas";
  98. _deskBookingResult.Date = new DateTime(2020, 1, 28);
  99. // Act
  100. IActionResult actionResult = _bookDeskModel.OnPost();
  101. // Assert
  102. var redirectToPageResult = Assert.IsType<RedirectToPageResult>(actionResult);
  103. Assert.Equal("BookDeskConfirmation", redirectToPageResult.PageName);
  104. IDictionary<string, object> routeValues = redirectToPageResult.RouteValues;
  105. Assert.Equal(3, routeValues.Count);
  106. var deskBookingId = Assert.Contains("DeskBookingId", routeValues);
  107. Assert.Equal(_deskBookingResult.DeskBookingId, deskBookingId);
  108. var firstName = Assert.Contains("FirstName", routeValues);
  109. Assert.Equal(_deskBookingResult.FirstName, firstName);
  110. var date = Assert.Contains("Date", routeValues);
  111. Assert.Equal(_deskBookingResult.Date, date);
  112. }
  113. }
  114. }

字符串
这是我的测试项目设置:

  1. <Project Sdk="Microsoft.NET.Sdk">
  2. <PropertyGroup>
  3. <TargetFramework>net5.0</TargetFramework>
  4. <IsPackable>false</IsPackable>
  5. <RootNamespace>DeskBooker.Web</RootNamespace>
  6. <Platforms>AnyCPU;x64</Platforms>
  7. </PropertyGroup>
  8. <ItemGroup>
  9. <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.4.0" />
  10. <PackageReference Include="Moq" Version="4.13.1" />
  11. <PackageReference Include="xunit" Version="2.4.1" />
  12. <PackageReference Include="xunit.runner.visualstudio" Version="2.4.1" />
  13. <PackageReference Include="coverlet.collector" Version="1.1.0" />
  14. </ItemGroup>
  15. <ItemGroup>
  16. <ProjectReference Include="..\DeskBooker.Web\DeskBooker.Web.csproj" />
  17. </ItemGroup>
  18. </Project>


然而,当我运行测试时,它只构建,但不运行任何测试,因为它似乎没有发现任何测试。
怎么了?
谢谢

kxkpmulp

kxkpmulp1#

问题似乎是.NET TargetFramework太旧了。

相关问题