// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. using Microsoft.Testing.Platform.Acceptance.IntegrationTests; using Microsoft.Testing.Platform.Acceptance.IntegrationTests.Helpers; using Microsoft.Testing.Platform.Helpers; namespace MSTest.Acceptance.IntegrationTests; [TestClass] public sealed class DataSourceTests : AcceptanceTestBase { private const string SourceCode = """ #file DataSourceTests.csproj net472 enable Exe preview true PreserveNewest #file App.config
#file MyTestClass.cs using Microsoft.VisualStudio.TestTools.UnitTesting; [TestClass] public class MyTestClass { public TestContext TestContext { get; set; } [DataTestMethod] [DataSource("TestData")] public void TestSum() { int expected = (int)TestContext.DataRow["expectedSum"]; int num1 = (int)TestContext.DataRow["num1"]; int num2 = (int)TestContext.DataRow["num2"]; Assert.AreEqual(expected, num1 + num2); } [TestMethod] public void MyTest() { } } #file TestData.csv num1,num2,expectedSum 1,1,2 5,6,11 10,30,40 1,1,1 """; [TestMethod] [OSCondition(OperatingSystems.Windows)] public async Task TestDataSourceFromAppConfig() { using TestAsset generator = await TestAsset.GenerateAssetAsync( "DataSourceTests", SourceCode .PatchCodeWithReplace("$MSTestVersion$", MSTestVersion) .PatchCodeWithReplace("$MicrosoftNETTestSdkVersion$", MicrosoftNETTestSdkVersion), addPublicFeeds: true); await DotnetCli.RunAsync( $"build {generator.TargetAssetPath} -c Release", cancellationToken: TestContext.CancellationToken); var testHost = TestHost.LocateFrom(generator.TargetAssetPath, "DataSourceTests", "net472"); TestHostResult result = await testHost.ExecuteAsync(cancellationToken: TestContext.CancellationToken); result.AssertExitCodeIs(ExitCode.AtLeastOneTestFailed); result.AssertOutputContainsSummary(failed: 1, passed: 4, skipped: 0); } public TestContext TestContext { get; set; } }