Skip to content

Commit 564c093

Browse files
authored
Add unit test project (#3380)
1 parent 835bf30 commit 564c093

File tree

10 files changed

+208
-33
lines changed

10 files changed

+208
-33
lines changed

build.proj

Lines changed: 66 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -58,16 +58,19 @@
5858
<NetStandardDriver Include="**/netcore/ref/Microsoft.Data.SqlClient*.csproj" />
5959
<AKVProvider Include="**/add-ons/**/AzureKeyVaultProvider/*.csproj" />
6060

61+
<UnitTests Include="**/UnitTests/Microsoft.Data.SqlClient.UnitTests.csproj" />
62+
<UnitTestsProj Include="**/UnitTests/Microsoft.Data.SqlClient.UnitTests.csproj" />
63+
6164
<FunctionalTests Include="**/Common/Common.csproj" />
6265
<FunctionalTests Include="**/tools/TDS/TDS/TDS.csproj" />
6366
<FunctionalTests Include="**/tools/TDS/TDS.EndPoint/TDS.EndPoint.csproj" />
6467
<FunctionalTests Include="**/tools/TDS/TDS.Servers/TDS.Servers.csproj" />
6568
<FunctionalTests Include="**/tools/Microsoft.Data.SqlClient.TestUtilities/Microsoft.Data.SqlClient.TestUtilities.csproj" />
6669
<FunctionalTests Include="**/tools/CoreFx.Private.TestUtilities/CoreFx.Private.TestUtilities.csproj" />
6770
<FunctionalTests Include="**/ManualTests/SQL/UdtTest/UDTs/Address/Address.csproj" />
68-
<FunctionalTests Include="**/FunctionalTests/Microsoft.Data.SqlClient.Tests.csproj" />
69-
<FunctionalTestsProj Include="**/FunctionalTests/Microsoft.Data.SqlClient.Tests.csproj" />
70-
71+
<FunctionalTests Include="**/FunctionalTests/Microsoft.Data.SqlClient.FunctionalTests.csproj" />
72+
<FunctionalTestsProj Include="**/FunctionalTests/Microsoft.Data.SqlClient.FunctionalTests.csproj" />
73+
7174
<ManualTests Include="**/Common/Common.csproj" />
7275
<ManualTests Include="**/ManualTests/SQL/UdtTest/UDTs/Address/Address.csproj" />
7376
<ManualTests Include="**/ManualTests/SQL/UdtTest/UDTs/Circle/Circle.csproj" />
@@ -84,10 +87,10 @@
8487
<Target Name="Restore" DependsOnTargets="RestoreSqlServerLib;RestoreNetCore;RestoreNetFx" />
8588
<Target Name="BuildAll" DependsOnTargets="BuildSqlServerLib;BuildNetFx;BuildNetCore;BuildNetStandard" />
8689
<Target Name="BuildAllConfigurations" DependsOnTargets="Restore;BuildTools;BuildSqlServerLib;BuildNetFx;BuildNetCoreAllOS;BuildNetStandard;GenerateNugetPackage" />
87-
<Target Name="BuildSqlServerPackage" DependsOnTargets="BuildSqlServerLibAnyOS;GenerateSqlServerPackage" />
88-
<Target Name="BuildTestsNetCore" DependsOnTargets="RestoreTestsNetCore;BuildAKVNetCore;BuildFunctionalTestsNetCore;BuildManualTestsNetCore" />
89-
<Target Name="BuildTestsNetFx" DependsOnTargets="RestoreTestsNetFx;BuildAKVNetFx;BuildFunctionalTestsNetFx;BuildManualTestsNetFx" Condition="$(IsEnabledWindows) == 'true'" />
90-
<Target Name="BuildTests" DependsOnTargets="BuildTestsNetCore;BuildTestsNetFx" />
90+
<Target Name="BuildSqlServerPackage" DependsOnTargets="BuildSqlServerLibAnyOS;GenerateSqlServerPackage"/>
91+
<Target Name="BuildTestsNetCore" DependsOnTargets="RestoreTestsNetCore;BuildAKVNetCore;BuildUnitTestsNetCore;BuildFunctionalTestsNetCore;BuildManualTestsNetCore"/>
92+
<Target Name="BuildTestsNetFx" DependsOnTargets="RestoreTestsNetFx;BuildAKVNetFx;BuildUnitTestsNetFx;BuildFunctionalTestsNetFx;BuildManualTestsNetFx" Condition="$(IsEnabledWindows) == 'true'"/>
93+
<Target Name="BuildTests" DependsOnTargets="BuildTestsNetCore;BuildTestsNetFx"/>
9194

9295
<Target Name="RestoreSqlServerLib">
9396
<MSBuild Projects="@(SqlServerLib)" Targets="restore" />
@@ -100,6 +103,7 @@
100103
<Target Name="RestoreTestsNetCore">
101104
<MSBuild Projects="@(ManualTests)" Targets="restore" Properties="$(TestProjectProperties)" />
102105
<MSBuild Projects="@(FunctionalTests)" Targets="restore" Properties="$(TestProjectProperties)" />
106+
<MSBuild Projects="@(UnitTests)" Targets="restore" Properties="$(TestProjectProperties)"/>
103107
</Target>
104108

105109
<Target Name="RestoreNetFx" Condition="'$(IsEnabledWindows)' == 'true'">
@@ -109,6 +113,7 @@
109113
<Target Name="RestoreTestsNetFx" Condition="'$(IsEnabledWindows)' == 'true'">
110114
<MSBuild Projects="@(ManualTests)" Targets="restore" Properties="$(TestProjectProperties)" />
111115
<MSBuild Projects="@(FunctionalTests)" Targets="restore" Properties="$(TestProjectProperties)" />
116+
<MSBuild Projects="@(UnitTests)" Targets="restore" Properties="$(TestProjectProperties)"/>
112117
</Target>
113118

114119
<Target Name="BuildTools" Condition="'$(BuildTools)' == 'true'">
@@ -144,13 +149,17 @@
144149
<MSBuild Projects="@(NetCoreDriver)" Properties="$(CI);$(ProjectProperties);Platform=AnyCPU;OSGroup=Windows_NT;" RemoveProperties="TargetsWindows;TargetsUnix;" Condition="'$(IsEnabledWindows)' == 'true'" />
145150
<MSBuild Projects="@(NetCoreDriver)" Properties="$(CI);$(ProjectProperties);Platform=AnyCPU;OSGroup=AnyOS;" RemoveProperties="TargetsWindows;TargetsUnix;" />
146151
</Target>
147-
148152
<!-- Build .NET Standard target DLLs for Lib folder from here.
149153
This target enables BuildForLib for the NetCore ref project. -->
150154
<Target Name="BuildNetStandard">
151155
<MSBuild Projects="@(NetStandardDriver)" Properties="$(CI);$(ProjectProperties);Platform=AnyCPU;OSGroup=AnyOS;BuildForLib=True" RemoveProperties="TargetsWindows;TargetsUnix;" />
152156
</Target>
153157

158+
<Target Name="BuildUnitTestsNetCore" DependsOnTargets="RestoreTestsNetCore" Condition="$(ReferenceType.Contains('Project'))">
159+
<Message Text=">>> Building UnitTestsNetCore [TestTargetOS=$(TestOS)netcoreapp;$(TestProjectProperties);Platform=AnyCPU;ReferenceType=$(ReferenceType);] ..." Condition="!$(ReferenceType.Contains('Package'))"/>
160+
<MSBuild Projects="@(UnitTests)" Properties="TestTargetOS=$(TestOS)netcoreapp;$(TestProjectProperties);Platform=AnyCPU;" Condition="!$(ReferenceType.Contains('Package'))" />
161+
</Target>
162+
154163
<Target Name="BuildFunctionalTestsNetCore" DependsOnTargets="RestoreTestsNetCore">
155164
<Message Text=">>> Building FunctionalTestsNetCore [TestTargetOS=$(TestOS)netcoreapp;$(TestProjectProperties);Platform=AnyCPU;ReferenceType=$(ReferenceType);] ..." Condition="!$(ReferenceType.Contains('Package'))" />
156165
<MSBuild Projects="@(FunctionalTests)" Properties="TestTargetOS=$(TestOS)netcoreapp;$(TestProjectProperties);Platform=AnyCPU;" Condition="!$(ReferenceType.Contains('Package'))" />
@@ -169,6 +178,11 @@
169178
<MSBuild Projects="@(ManualTests)" Properties="TestTargetOS=$(TestOS)netcoreapp;$(TestProjectProperties);Platform=$(Platform);" Condition="$(ReferenceType.Contains('Package'))" />
170179
</Target>
171180

181+
<Target Name="BuildUnitTestsNetFx" DependsOnTargets="RestoreTestsNetFx" Condition="'$(IsEnabledWindows)' == 'true' AND $(ReferenceType.Contains('Project'))">
182+
<Message Text=">>> Building UnitTestsNetFx [TestTargetOS=$(TestOS)netfx;$(TestProjectProperties);Platform=AnyCPU;] ..." Condition="!$(ReferenceType.Contains('Package'))"/>
183+
<MSBuild Projects="@(UnitTests)" Properties="TestTargetOS=$(TestOS)netfx;$(TestProjectProperties);Platform=AnyCPU;" Condition="!$(ReferenceType.Contains('Package'))"/>
184+
</Target>
185+
172186
<Target Name="BuildFunctionalTestsNetFx" DependsOnTargets="RestoreTestsNetFx" Condition="'$(IsEnabledWindows)' == 'true'">
173187
<Message Text=">>> Building FunctionalTestsNetFx [TestTargetOS=$(TestOS)netfx;$(TestProjectProperties);Platform=AnyCPU;] ..." Condition="!$(ReferenceType.Contains('Package'))" />
174188
<MSBuild Projects="@(FunctionalTests)" Properties="TestTargetOS=$(TestOS)netfx;$(TestProjectProperties);Platform=AnyCPU;" Condition="!$(ReferenceType.Contains('Package'))" />
@@ -189,8 +203,51 @@
189203

190204
<!-- Tests -->
191205

206+
<!-- Run all tests applicable to the host OS. -->
207+
<Target Name="RunTests" DependsOnTargets="RunUnitTests;RunFunctionalTests;RunManualTests"/>
208+
192209
<!-- Run all unit tests applicable to the host OS. -->
193-
<Target Name="RunTests" DependsOnTargets="RunFunctionalTests;RunManualTests" />
210+
<Target Name="RunUnitTests" DependsOnTargets="RunUnitTestsWindows;RunUnitTestsUnix" Condition="$(ReferenceType.Contains('Project'))"/>
211+
212+
<!-- Run all unit tests applicable to Windows. -->
213+
<Target Name="RunUnitTestsWindows" Condition="'$(IsEnabledWindows)' == 'true' AND $(ReferenceType.Contains('Project'))">
214+
<PropertyGroup>
215+
<TestCommand>
216+
$(DotnetPath)dotnet test "@(UnitTestsProj)"
217+
--no-build
218+
-v n
219+
-p:Configuration=$(Configuration)
220+
-p:Target$(TFGroup)Version=$(TF)
221+
-p:TestTargetOS=Windows$(TargetGroup)
222+
--collect "Code coverage"
223+
--results-directory $(ResultsDirectory)
224+
--logger:"trx;LogFilePrefix=Unit-Windows$(TargetGroup)-$(TestSet)"
225+
</TestCommand>
226+
<TestCommand>$(TestCommand.Replace($([System.Environment]::NewLine), " "))</TestCommand>
227+
</PropertyGroup>
228+
<Message Text=">>> Running unit tests for Windows via command: $(TestCommand)"/>
229+
<Exec ConsoleToMsBuild="true" Command="$(TestCommand)"/>
230+
</Target>
231+
232+
<!-- Run all unit tests applicable to Unix. -->
233+
<Target Name="RunUnitTestsUnix" Condition="'$(IsEnabledWindows)' != 'true' AND $(ReferenceType.Contains('Project'))">
234+
<PropertyGroup>
235+
<TestCommand>
236+
$(DotnetPath)dotnet test "@(UnitTestsProj)"
237+
--no-build
238+
-v n
239+
-p:Configuration=$(Configuration)
240+
-p:TargetNetCoreVersion=$(TF)
241+
-p:TestTargetOS=Unixnetcoreapp
242+
--collect "Code coverage"
243+
--results-directory $(ResultsDirectory)
244+
--logger:"trx;LogFilePrefix=Unit-Unixnetcoreapp-$(TestSet)"
245+
</TestCommand>
246+
<TestCommand>$(TestCommand.Replace($([System.Environment]::NewLine), " "))</TestCommand>
247+
</PropertyGroup>
248+
<Message Text=">>> Running unit tests for Unix via command: $(TestCommand)"/>
249+
<Exec ConsoleToMsBuild="true" Command="$(TestCommand)"/>
250+
</Target>
194251

195252
<!-- Run all Functional tests applicable to the host OS. -->
196253
<Target Name="RunFunctionalTests" DependsOnTargets="RunFunctionalTestsWindows;RunFunctionalTestsUnix" />

eng/pipelines/common/templates/steps/build-and-run-tests-netcore-step.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,11 +64,13 @@ steps:
6464
msbuildArchitecture: x64
6565
msbuildArguments: '-t:BuildTestsNetCore -p:ReferenceType=${{parameters.referenceType }} -p:TargetNetCoreVersion=${{parameters.TargetNetCoreVersion }} -p:TestMicrosoftDataSqlClientVersion=${{parameters.NugetPackageVersion }} -p:Configuration=${{parameters.configuration }}'
6666

67+
# Don't run unit tests using package reference. Unit tests are only run using project reference.
68+
6769
- task: DotNetCoreCLI@2
6870
displayName: 'Run Functional Tests for ${{parameters.TargetNetCoreVersion }}'
6971
inputs:
7072
command: test
71-
projects: 'src\Microsoft.Data.SqlClient\tests\FunctionalTests\Microsoft.Data.SqlClient.Tests.csproj'
73+
projects: 'src\Microsoft.Data.SqlClient\tests\FunctionalTests\Microsoft.Data.SqlClient.FunctionalTests.csproj'
7274
arguments: '-p:Platform=${{parameters.platform }} -p:TestTargetOS="${{parameters.TestTargetOS }}" -p:TargetNetCoreVersion=${{parameters.TargetNetCoreVersion }} -p:ReferenceType=${{parameters.referenceType }} -p:Configuration=${{parameters.configuration }} -p:TestMicrosoftDataSqlClientVersion=${{parameters.NugetPackageVersion }} --no-build -v n --filter "category!=nonnetcoreapptests&category!=failing&category!=nonwindowstests"'
7375

7476
- task: DotNetCoreCLI@2

eng/pipelines/common/templates/steps/build-and-run-tests-netfx-step.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,12 +62,14 @@ steps:
6262
inputs:
6363
solution: build.proj
6464
msbuildArguments: ' -t:BuildTestsNetFx -p:ReferenceType=${{parameters.referenceType }} -p:TestMicrosoftDataSqlClientVersion=${{parameters.NugetPackageVersion }} -p:TargetNetFxVersion=${{parameters.TargetNetFxVersion }} -p:Configuration=${{parameters.configuration }} -p:Platform=${{parameters.platform }}'
65+
66+
# Don't run unit tests using package reference. Unit tests are only run using project reference.
6567

6668
- task: DotNetCoreCLI@2
6769
displayName: 'Run Functional Tests for ${{parameters.TargetNetFxVersion }}'
6870
inputs:
6971
command: test
70-
projects: 'src\Microsoft.Data.SqlClient\tests\FunctionalTests\Microsoft.Data.SqlClient.Tests.csproj'
72+
projects: 'src\Microsoft.Data.SqlClient\tests\FunctionalTests\Microsoft.Data.SqlClient.FunctionalTests.csproj'
7173
arguments: '-p:Platform=${{parameters.platform }} -p:TestTargetOS="${{parameters.TestTargetOS }}" -p:TargetNetFxVersion=${{parameters.TargetNetFxVersion }} -p:ReferenceType=${{parameters.referenceType }} -p:Configuration=${{parameters.configuration }} -p:TestMicrosoftDataSqlClientVersion=${{parameters.NugetPackageVersion }} --no-build -v n --filter "category!=nonnetfxtests&category!=failing&category!=nonwindowstests" --collect "Code Coverage"'
7274

7375
- task: DotNetCoreCLI@2

eng/pipelines/common/templates/steps/run-all-tests-step.yml

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,21 @@ steps:
5353
condition: succeededOrFailed()
5454

5555
- ${{if eq(parameters.operatingSystem, 'Windows')}}:
56+
- ${{if eq(parameters.referenceType, 'Project')}}:
57+
- task: MSBuild@1
58+
displayName: 'Run Unit Tests ${{parameters.msbuildArchitecture }}'
59+
inputs:
60+
solution: build.proj
61+
msbuildArchitecture: ${{parameters.msbuildArchitecture }}
62+
platform: '${{parameters.platform }}'
63+
configuration: '${{parameters.configuration }}'
64+
${{ if eq(parameters.msbuildArchitecture, 'x64') }}:
65+
msbuildArguments: '-t:RunUnitTests -p:TF=${{parameters.targetFramework }} -p:TestMicrosoftDataSqlClientVersion=${{parameters.nugetPackageVersion }}'
66+
${{ else }}: # x86
67+
msbuildArguments: '-t:RunUnitTests -p:TF=${{parameters.targetFramework }} -p:TestMicrosoftDataSqlClientVersion=${{parameters.nugetPackageVersion }} -p:DotnetPath=${{parameters.dotnetx86RootPath }}'
68+
condition: and(succeeded(), eq(variables['Agent.OS'], 'Windows_NT'))
69+
retryCountOnTaskFailure: 1
70+
5671
- task: MSBuild@1
5772
displayName: 'Run Functional Tests ${{parameters.msbuildArchitecture }}'
5873
inputs:
@@ -82,6 +97,19 @@ steps:
8297
retryCountOnTaskFailure: 2
8398

8499
- ${{ else }}: # Linux or macOS
100+
- ${{if eq(parameters.referenceType, 'Project')}}:
101+
- task: DotNetCoreCLI@2
102+
displayName: 'Run Unit Tests'
103+
inputs:
104+
command: custom
105+
projects: build.proj
106+
custom: msbuild
107+
arguments: '-t:RunUnitTests -p:TF=${{parameters.targetFramework }} -p:TestSet=${{parameters.testSet }} -p:ReferenceType=${{parameters.referenceType }} -p:TestMicrosoftDataSqlClientVersion=${{parameters.nugetPackageVersion }} -p:platform=${{parameters.platform }} -p:Configuration=${{parameters.configuration }}'
108+
verbosityRestore: Detailed
109+
verbosityPack: Detailed
110+
retryCountOnTaskFailure: 1
111+
condition: and(succeeded(), ne(variables['Agent.OS'], 'Windows_NT'))
112+
85113
- task: DotNetCoreCLI@2
86114
displayName: 'Run Functional Tests'
87115
inputs:

0 commit comments

Comments
 (0)