Skip to content

Commit ca4af1e

Browse files
committed
make use of IClassFixture<T>
1 parent e964f8c commit ca4af1e

35 files changed

+314
-402
lines changed

README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ public class SampleApp_ModuleOmega_Tests
129129

130130
The fluent API should direct you in building up a rule, based on a combination of [predicates](documentation/api.md#predicate), [conditions](documentation/api.md#condition) and conjunctions.
131131

132-
The starting point for any rule is the static [`Types`](documentation/api.md#types) class, where you load a set of types from an assembly, domain or path.
132+
The starting point for any rule is one of the static methods on [`Types`](documentation/api.md#types) class, where you load a set of types from an assembly, domain or path.
133133

134134
```csharp
135135
var types = Types.InAssembly(typeof(MyClass).Assembly);
@@ -155,6 +155,8 @@ var isValid = result.IsSuccessful;
155155
var types = result.FailingTypes;
156156
```
157157

158+
> **Tip**
159+
Loading types is time time-consuming, since `Type` class is immutable, it can be shared between tests.
158160

159161
## Rules for dependency analysis
160162

documentation/readme.nt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ The library is available as a package on NuGet: [NetArchTest.eNhancedEdition](ht
8080

8181
The fluent API should direct you in building up a rule, based on a combination of [predicates](documentation/api.md#predicate), [conditions](documentation/api.md#condition) and conjunctions.
8282

83-
The starting point for any rule is the static [`Types`](documentation/api.md#types) class, where you load a set of types from an assembly, domain or path.
83+
The starting point for any rule is one of the static methods on [`Types`](documentation/api.md#types) class, where you load a set of types from an assembly, domain or path.
8484

8585
```csharp
8686
var types = Types.InAssembly(typeof(MyClass).Assembly);
@@ -106,6 +106,8 @@ var isValid = result.IsSuccessful;
106106
var types = result.FailingTypes;
107107
```
108108

109+
> **Tip**
110+
Loading types is time time-consuming, since `Type` class is immutable, it can be shared between tests.
109111

110112
## Rules for dependency analysis
111113

tests/NetArchTest.Rules.UnitTests/ConditionListTests.cs

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,17 @@
77
using NetArchTest.TestStructure.NameMatching.Namespace2;
88
using NetArchTest.TestStructure.NameMatching.Namespace2.Namespace3;
99
using NetArchTest.TestStructure.NameMatching.NamespaceGeneric.Namespace1;
10+
using NetArchTest.UnitTests.TestFixtures;
1011
using Xunit;
1112

1213
namespace NetArchTest.UnitTests
1314
{
14-
public class ConditionListTests
15+
public class ConditionListTests(AllTypesFixture fixture) : IClassFixture<AllTypesFixture>
1516
{
1617
[Fact(DisplayName = "Conditions can be grouped together using 'or' logic.")]
1718
public void Or_AppliedToConditions_SelectCorrectTypes()
1819
{
19-
var result = Types
20-
.InAssembly(Assembly.GetAssembly(typeof(ClassA1)))
20+
var result = fixture.Types
2121
.That()
2222
.ResideInNamespace("NetArchTest.TestStructure.NameMatching")
2323
.Should()
@@ -40,8 +40,7 @@ public void Or_AppliedToConditions_SelectCorrectTypes()
4040
[Fact(DisplayName = "Conditions can be chained together using 'and' logic.")]
4141
public void And_AppliedToConditions_SelectCorrectTypes()
4242
{
43-
var result = Types
44-
.InAssembly(Assembly.GetAssembly(typeof(ClassA1)))
43+
var result = fixture.Types
4544
.That()
4645
.ResideInNamespace("NetArchTest.TestStructure.NameMatching")
4746
.Should()
@@ -61,8 +60,7 @@ public void And_AppliedToConditions_SelectCorrectTypes()
6160
[Fact(DisplayName = "An Or() statement will signal the start of a separate group of Conditions")]
6261
public void Or_MultipleInstances_TreatedAsSeparateGroups()
6362
{
64-
var result = Types
65-
.InAssembly(Assembly.GetAssembly(typeof(ClassA1)))
63+
var result = fixture.Types
6664
.That()
6765
.ResideInNamespace("NetArchTest.TestStructure.NameMatching.Namespace2")
6866
.Should()
@@ -87,8 +85,7 @@ public void Or_MultipleInstances_TreatedAsSeparateGroups()
8785
public void ShouldNot_FollowingConditions_Inversed()
8886
{
8987
// First example - single condition
90-
var predicates = Types
91-
.InAssembly(Assembly.GetAssembly(typeof(ClassA1)))
88+
var predicates = fixture.Types
9289
.That()
9390
.ResideInNamespace("NetArchTest.TestStructure.Interfaces")
9491
.And()
@@ -98,8 +95,7 @@ public void ShouldNot_FollowingConditions_Inversed()
9895
var result1Not = predicates.ShouldNot().NotImplementInterface(typeof(IExample)).GetResult();
9996

10097
// Third example - two conditions with an or() statement
101-
predicates = Types
102-
.InAssembly(Assembly.GetAssembly(typeof(ClassA1)))
98+
predicates = fixture.Types
10399
.That()
104100
.ResideInNamespace(" NetArchTest.TestStructure.NameMatching.Namespace1");
105101

@@ -113,8 +109,7 @@ public void ShouldNot_FollowingConditions_Inversed()
113109
[Fact(DisplayName = "If a condition fails then a list of failing types should be returned.")]
114110
public void GetResult_Failed_ReturnFailedTypes()
115111
{
116-
var result = Types
117-
.InAssembly(Assembly.GetAssembly(typeof(ClassA1)))
112+
var result = fixture.Types
118113
.That()
119114
.ResideInNamespace("NetArchTest.TestStructure.NameMatching")
120115
.And()
@@ -132,8 +127,7 @@ public void GetResult_Failed_ReturnFailedTypes()
132127
[Fact(DisplayName = "If a condition fails using ShouldNot logic then a list of failing types should be returned.")]
133128
public void GetResult_FailedShouldNot_ReturnFailedTypes()
134129
{
135-
var result = Types
136-
.InAssembly(Assembly.GetAssembly(typeof(ClassA1)))
130+
var result = fixture.Types
137131
.That()
138132
.ResideInNamespace("NetArchTest.TestStructure.NameMatching")
139133
.ShouldNot()
@@ -150,8 +144,7 @@ public void GetResult_FailedShouldNot_ReturnFailedTypes()
150144
[Fact(DisplayName = "If a condition succeeds then a list of failing types should be empty.")]
151145
public void GetResult_Success_ReturnEmptyFailedTypes()
152146
{
153-
var result = Types
154-
.InAssembly(Assembly.GetAssembly(typeof(ClassA1)))
147+
var result = fixture.Types
155148
.That()
156149
.ResideInNamespace("NetArchTest.TestStructure.NameMatching")
157150
.And()

tests/NetArchTest.Rules.UnitTests/ConditionTests.cs

Lines changed: 11 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,19 @@
11
using System;
2-
using System.Reflection;
3-
using NetArchTest.Rules;
42
using NetArchTest.TestStructure.CustomAttributes;
53
using NetArchTest.TestStructure.Inheritance;
64
using NetArchTest.TestStructure.Interfaces;
7-
using NetArchTest.TestStructure.NameMatching.Namespace1;
85
using NetArchTest.UnitTests.TestDoubles;
6+
using NetArchTest.UnitTests.TestFixtures;
97
using Xunit;
108

119
namespace NetArchTest.UnitTests
1210
{
13-
public class ConditionTests
11+
public class ConditionTests(AllTypesFixture fixture) : IClassFixture<AllTypesFixture>
1412
{
1513
[Fact(DisplayName = "HaveCustomAttribute")]
1614
public void HaveCustomAttribute()
1715
{
18-
var result = Types
19-
.InAssembly(Assembly.GetAssembly(typeof(ClassA1)))
16+
var result = fixture.Types
2017
.That()
2118
.ResideInNamespace("NetArchTest.TestStructure.CustomAttributes")
2219
.And()
@@ -30,8 +27,7 @@ public void HaveCustomAttribute()
3027
[Fact(DisplayName = "NotHaveCustomAttribute")]
3128
public void NotHaveCustomAttribute()
3229
{
33-
var result = Types
34-
.InAssembly(Assembly.GetAssembly(typeof(ClassA1)))
30+
var result = fixture.Types
3531
.That()
3632
.ResideInNamespace("NetArchTest.TestStructure.CustomAttributes")
3733
.And()
@@ -45,8 +41,7 @@ public void NotHaveCustomAttribute()
4541
[Fact(DisplayName = "HaveCustomAttributeOrInherit")]
4642
public void HaveCustomAttributeOrInherit()
4743
{
48-
var result = Types
49-
.InAssembly(Assembly.GetAssembly(typeof(ClassA1)))
44+
var result = fixture.Types
5045
.That()
5146
.ResideInNamespace("NetArchTest.TestStructure.CustomAttributes")
5247
.And()
@@ -60,8 +55,7 @@ public void HaveCustomAttributeOrInherit()
6055
[Fact(DisplayName = "NotHaveCustomAttributeOrInherit")]
6156
public void NotHaveCustomAttributeOrInherit()
6257
{
63-
var result = Types
64-
.InAssembly(Assembly.GetAssembly(typeof(ClassA1)))
58+
var result = fixture.Types
6559
.That()
6660
.ResideInNamespace("NetArchTest.TestStructure.CustomAttributes")
6761
.And()
@@ -75,8 +69,7 @@ public void NotHaveCustomAttributeOrInherit()
7569
[Fact(DisplayName = "Inherit")]
7670
public void Inherit()
7771
{
78-
var result = Types
79-
.InAssembly(Assembly.GetAssembly(typeof(ClassA1)))
72+
var result = fixture.Types
8073
.That()
8174
.ResideInNamespace("NetArchTest.TestStructure.Inheritance")
8275
.And()
@@ -90,8 +83,7 @@ public void Inherit()
9083
[Fact(DisplayName = "NotInherit")]
9184
public void NotInherit()
9285
{
93-
var result = Types
94-
.InAssembly(Assembly.GetAssembly(typeof(ClassA1)))
86+
var result = fixture.Types
9587
.That()
9688
.ResideInNamespace("NetArchTest.TestStructure.Inheritance")
9789
.And()
@@ -105,8 +97,7 @@ public void NotInherit()
10597
[Fact(DisplayName = "ImplementInterface")]
10698
public void ImplementInterface()
10799
{
108-
var result = Types
109-
.InAssembly(Assembly.GetAssembly(typeof(ClassA1)))
100+
var result = fixture.Types
110101
.That()
111102
.ResideInNamespace("NetArchTest.TestStructure.Interfaces")
112103
.And()
@@ -120,8 +111,7 @@ public void ImplementInterface()
120111
[Fact(DisplayName = "NotImplementInterface")]
121112
public void NotImplementInterface()
122113
{
123-
var result = Types
124-
.InAssembly(Assembly.GetAssembly(typeof(ClassA1)))
114+
var result = fixture.Types
125115
.That()
126116
.ResideInNamespace("NetArchTest.TestStructure.Interfaces")
127117
.And()
@@ -139,8 +129,7 @@ public void MeetCustomRule()
139129
var rule = new CustomRuleTestDouble(t => t.Name.Equals("ClassA2", StringComparison.InvariantCultureIgnoreCase));
140130

141131
// This rule uses the custom rule to confirm that "ClassA1" has been selected
142-
var result = Types
143-
.InAssembly(Assembly.GetAssembly(typeof(ClassA1)))
132+
var result = fixture.Types
144133
.That()
145134
.HaveName("ClassA2")
146135
.Should()

tests/NetArchTest.Rules.UnitTests/ConditionTests_AccessModifiers.cs

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,11 @@
11
using NetArchTest.Rules;
2+
using NetArchTest.UnitTests.TestFixtures;
23
using Xunit;
34

45
namespace NetArchTest.UnitTests
56
{
6-
public class ConditionTests_AccessModifiers : IClassFixture<AccessModifiersFixture>
7+
public class ConditionTests_AccessModifiers(AccessModifiersFixture fixture) : IClassFixture<AccessModifiersFixture>
78
{
8-
AccessModifiersFixture fixture;
9-
10-
public ConditionTests_AccessModifiers(AccessModifiersFixture fixture)
11-
{
12-
this.fixture = fixture;
13-
}
14-
15-
169
private Predicate GetTypesThat()
1710
{
1811
return fixture.Types

tests/NetArchTest.Rules.UnitTests/ConditionTests_Dependencies.cs

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,13 @@
11
using NetArchTest.Rules;
22
using NetArchTest.TestStructure.Dependencies.Examples;
33
using NetArchTest.TestStructure.Dependencies.Implementation;
4+
using NetArchTest.UnitTests.TestFixtures;
45
using Xunit;
56

67
namespace NetArchTest.UnitTests
78
{
8-
public class ConditionTests_Dependencies : IClassFixture<DependenciesFixture>
9+
public class ConditionTests_Dependencies(DependenciesFixture fixture) : IClassFixture<DependenciesFixture>
910
{
10-
DependenciesFixture fixture;
11-
12-
public ConditionTests_Dependencies(DependenciesFixture fixture)
13-
{
14-
this.fixture = fixture;
15-
}
16-
17-
18-
1911
private Predicate GetTypesThat()
2012
{
2113
return fixture.Types

tests/NetArchTest.Rules.UnitTests/ConditionTests_Names.cs

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,13 @@
33
using NetArchTest.Rules;
44
using NetArchTest.TestStructure.Names.Namespace1;
55
using NetArchTest.TestStructure.Names.Namespace2;
6+
using NetArchTest.UnitTests.TestFixtures;
67
using Xunit;
78

89
namespace NetArchTest.UnitTests
910
{
10-
public class ConditionTests_Names : IClassFixture<NamesFixture>
11+
public class ConditionTests_Names(NamesFixture fixture) : IClassFixture<NamesFixture>
1112
{
12-
NamesFixture fixture;
13-
14-
public ConditionTests_Names(NamesFixture fixture)
15-
{
16-
this.fixture = fixture;
17-
}
18-
1913
private Predicate GetTypesThat()
2014
{
2115
return fixture.Types

tests/NetArchTest.Rules.UnitTests/ConditionTests_Special.cs

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,14 @@
1-
using System.Reflection;
2-
using NetArchTest.Rules;
3-
using NetArchTest.TestStructure.File;
1+
using NetArchTest.TestStructure.File;
42
using NetArchTest.TestStructure.File.Incorrect.Yabadabado;
5-
using NetArchTest.TestStructure.NameMatching.Namespace1;
63
using NetArchTest.TestStructure.Stateless;
4+
using NetArchTest.UnitTests.TestFixtures;
75
using Xunit;
86
using static NetArchTest.Utils;
97

108
namespace NetArchTest.UnitTests
119
{
12-
public class ConditionTests_Special : IClassFixture<SpecialFixture>
10+
public class ConditionTests_Special(SpecialFixture fixture) : IClassFixture<SpecialFixture>
1311
{
14-
SpecialFixture fixture;
15-
16-
public ConditionTests_Special(SpecialFixture fixture)
17-
{
18-
this.fixture = fixture;
19-
}
20-
2112
[Fact(DisplayName = "BeImmutable")]
2213
public void BeImmutable()
2314
{

tests/NetArchTest.Rules.UnitTests/ConditionTests_Traits.cs

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,11 @@
11
using NetArchTest.Rules;
2+
using NetArchTest.UnitTests.TestFixtures;
23
using Xunit;
34

45
namespace NetArchTest.UnitTests
56
{
6-
public class ConditionTests_Traits : IClassFixture<TraitsFixture>
7+
public class ConditionTests_Traits(TraitsFixture fixture) : IClassFixture<TraitsFixture>
78
{
8-
TraitsFixture fixture;
9-
10-
public ConditionTests_Traits(TraitsFixture fixture)
11-
{
12-
this.fixture = fixture;
13-
}
14-
159
private Predicate GetTypesThat()
1610
{
1711
return fixture.Types

tests/NetArchTest.Rules.UnitTests/ConditionTests_Types.cs

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,11 @@
11
using NetArchTest.Rules;
2+
using NetArchTest.UnitTests.TestFixtures;
23
using Xunit;
34

45
namespace NetArchTest.UnitTests
56
{
6-
public class ConditionTests_Types : IClassFixture<TypesFixture>
7+
public class ConditionTests_Types(TypesFixture fixture) : IClassFixture<TypesFixture>
78
{
8-
TypesFixture fixture;
9-
10-
public ConditionTests_Types(TypesFixture fixture)
11-
{
12-
this.fixture = fixture;
13-
}
14-
15-
169
private Predicate GetTypesThat()
1710
{
1811
return fixture.Types

0 commit comments

Comments
 (0)