44using  System ; 
55using  System . Net ; 
66using  System . Net . Http ; 
7+ using  System . Reflection ; 
78using  System . Text ; 
89using  BasicWebSite . Models ; 
910using  Microsoft . AspNetCore . Hosting ; 
11+ using  Microsoft . AspNetCore . InternalTesting ; 
1012using  Microsoft . AspNetCore . Mvc . NewtonsoftJson ; 
13+ using  Microsoft . AspNetCore . Mvc . Testing ; 
1114using  Microsoft . VisualStudio . TestPlatform . ObjectModel . DataCollection ; 
1215using  Newtonsoft . Json ; 
1316using  Newtonsoft . Json . Linq ; 
17+ using  Xunit . Abstractions ; 
1418
1519namespace  Microsoft . AspNetCore . Mvc . FunctionalTests ; 
1620
17- public  abstract  class  ApiBehaviorTestBase < TStartup >  :  IClassFixture < MvcTestFixture < TStartup > >  where  TStartup  :  class 
21+ public  abstract  class  ApiBehaviorTestBase < TStartup >  :  LoggedTest  where  TStartup  :  class 
1822{ 
19-     protected  ApiBehaviorTestBase ( MvcTestFixture < TStartup >   fixture ) 
23+     protected  override   void   Initialize ( TestContext   context ,   MethodInfo   methodInfo ,   object [ ]   testMethodArguments ,   ITestOutputHelper   testOutputHelper ) 
2024    { 
21-         var  factory  =  fixture . Factories . FirstOrDefault ( )  ??  fixture . WithWebHostBuilder ( ConfigureWebHostBuilder ) ; 
22-         Client  =  factory . CreateDefaultClient ( ) ; 
25+         base . Initialize ( context ,  methodInfo ,  testMethodArguments ,  testOutputHelper ) ; 
26+         Factory  =  new  MvcTestFixture < TStartup > ( LoggerFactory ) . WithWebHostBuilder ( ConfigureWebHostBuilder ) ; 
27+         Client  =  Factory . CreateDefaultClient ( ) ; 
28+     } 
29+ 
30+     public  override  void  Dispose ( ) 
31+     { 
32+         Factory . Dispose ( ) ; 
33+         base . Dispose ( ) ; 
2334    } 
2435
2536    private  static void  ConfigureWebHostBuilder ( IWebHostBuilder  builder )  => 
2637        builder . UseStartup < TStartup > ( ) ; 
2738
28-     public  HttpClient  Client  {  get ;  } 
39+     public  WebApplicationFactory < TStartup >  Factory  {  get ;  private  set ;  } 
40+     public  HttpClient  Client  {  get ;  private  set ;  } 
2941
3042    [ Fact ] 
3143    public  virtual  async  Task  ActionsReturnBadRequest_WhenModelStateIsInvalid ( ) 
@@ -374,11 +386,6 @@ public virtual async Task SerializingValidationProblemDetails_WithExtensionData(
374386
375387public  class  ApiBehaviorTest  :  ApiBehaviorTestBase < BasicWebSite . StartupWithSystemTextJson > 
376388{ 
377-     public  ApiBehaviorTest ( MvcTestFixture < BasicWebSite . StartupWithSystemTextJson >  fixture ) 
378-         :  base ( fixture ) 
379-     { 
380-     } 
381- 
382389    [ Fact ] 
383390    public  override  Task  ActionsReturnBadRequest_WhenModelStateIsInvalid ( ) 
384391    { 
@@ -412,21 +419,16 @@ public override Task SerializingValidationProblemDetails_WithExtensionData()
412419
413420public  class  ApiBehaviorTestNewtonsoftJson  :  ApiBehaviorTestBase < BasicWebSite . StartupWithoutEndpointRouting > 
414421{ 
415-     public  ApiBehaviorTestNewtonsoftJson ( MvcTestFixture < BasicWebSite . StartupWithoutEndpointRouting >  fixture ) 
416-         :  base ( fixture ) 
417-     { 
418-         var  factory  =  fixture . WithWebHostBuilder ( ConfigureWebHostBuilder ) ; 
419-         CustomInvalidModelStateClient  =  factory . CreateDefaultClient ( ) ; 
420-     } 
421- 
422422    private  static void  ConfigureWebHostBuilder ( IWebHostBuilder  builder )  => 
423423        builder . UseStartup < BasicWebSite . StartupWithCustomInvalidModelStateFactory > ( ) ; 
424424
425-     public  HttpClient  CustomInvalidModelStateClient  {  get ;  } 
426- 
427425    [ Fact ] 
428426    public  async  Task  ActionsReturnBadRequest_UsesProblemDescriptionProviderAndApiConventionsToConfigureErrorResponse ( ) 
429427    { 
428+         await  using  var  factory  =  new  MvcTestFixture < BasicWebSite . StartupWithCustomInvalidModelStateFactory > ( LoggerFactory ) 
429+             . WithWebHostBuilder ( ConfigureWebHostBuilder ) ; 
430+         var  customInvalidModelStateClient  =  factory . CreateDefaultClient ( ) ; 
431+ 
430432        // Arrange 
431433        var  contactModel  =  new  Contact 
432434        { 
@@ -442,7 +444,7 @@ public async Task ActionsReturnBadRequest_UsesProblemDescriptionProviderAndApiCo
442444            } ; 
443445
444446        // Act 
445-         var  response  =  await  CustomInvalidModelStateClient . PostAsJsonAsync ( "/contact/PostWithVnd" ,  contactModel ) ; 
447+         var  response  =  await  customInvalidModelStateClient . PostAsJsonAsync ( "/contact/PostWithVnd" ,  contactModel ) ; 
446448
447449        // Assert 
448450        await  response . AssertStatusCodeAsync ( HttpStatusCode . BadRequest ) ; 
0 commit comments