diff --git a/TestAssets/TestProjects/VSTestDesktopAndNetCoreApp/Tests.cs b/TestAssets/TestProjects/VSTestDesktopAndNetCoreApp/Tests.cs
new file mode 100644
index 000000000..f242df270
--- /dev/null
+++ b/TestAssets/TestProjects/VSTestDesktopAndNetCoreApp/Tests.cs
@@ -0,0 +1,40 @@
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+
+namespace TestNamespace
+{
+ public class Program
+ {
+ public static void Main(string[] args)
+ {
+
+ }
+ }
+
+ [TestClass]
+ public class VSTestTests
+ {
+ [TestMethod]
+ public void VSTestPassTest()
+ {
+ }
+
+ [TestMethod]
+ public void VSTestFailTest()
+ {
+ Assert.Fail();
+ }
+
+ #if DESKTOP
+ [TestMethod]
+ public void VSTestPassTestDesktop()
+ {
+ }
+ #else
+ [TestMethod]
+ public void VSTestFailTestNetCoreApp()
+ {
+ Assert.Fail();
+ }
+ #endif
+ }
+}
\ No newline at end of file
diff --git a/TestAssets/TestProjects/VSTestDesktopAndNetCoreApp/VSTestDesktopAndNetCoreApp.csproj b/TestAssets/TestProjects/VSTestDesktopAndNetCoreApp/VSTestDesktopAndNetCoreApp.csproj
new file mode 100644
index 000000000..af9f62c1a
--- /dev/null
+++ b/TestAssets/TestProjects/VSTestDesktopAndNetCoreApp/VSTestDesktopAndNetCoreApp.csproj
@@ -0,0 +1,45 @@
+
+
+
+
+
+ Exe
+ net46;netcoreapp1.0
+ bin\$(Configuration)
+
+
+
+ NETCOREAPP;$(DefineConstants)
+
+
+
+ DESKTOP;$(DefineConstants)
+
+
+
+
+
+
+
+
+ 1.0.1
+
+
+
+
+
+ 1.0.0-alpha-20161019-1
+ All
+
+
+ 1.0.5-preview
+
+
+ 1.1.4-preview
+
+
+ 15.0.0-preview-20161025-02
+
+
+
+
\ No newline at end of file
diff --git a/TestAssets/TestProjects/VSTestDotNetCoreProject/VSTestDotNetCoreProject.csproj b/TestAssets/TestProjects/VSTestDotNetCoreProject/VSTestDotNetCoreProject.csproj
index 51f15125b..904ce7fa3 100644
--- a/TestAssets/TestProjects/VSTestDotNetCoreProject/VSTestDotNetCoreProject.csproj
+++ b/TestAssets/TestProjects/VSTestDotNetCoreProject/VSTestDotNetCoreProject.csproj
@@ -21,13 +21,13 @@
All
- 1.0.4-preview
+ 1.0.5-preview
- 1.1.3-preview
+ 1.1.4-preview
- 15.0.0-preview-20161005-01
+ 15.0.0-preview-20161025-02
diff --git a/build/Microsoft.DotNet.Cli.Compile.targets b/build/Microsoft.DotNet.Cli.Compile.targets
index 037253813..c700efd73 100644
--- a/build/Microsoft.DotNet.Cli.Compile.targets
+++ b/build/Microsoft.DotNet.Cli.Compile.targets
@@ -171,7 +171,10 @@
-
+
+
+
+
@@ -216,8 +219,6 @@
-
-
diff --git a/resources/MSBuildImports/15.0/Microsoft.Common.CrossTargeting.targets/ImportAfter/Microsoft.TestPlatform.CrossTargeting.targets b/resources/MSBuildImports/15.0/Microsoft.Common.CrossTargeting.targets/ImportAfter/Microsoft.TestPlatform.CrossTargeting.targets
new file mode 100644
index 000000000..89a55d128
--- /dev/null
+++ b/resources/MSBuildImports/15.0/Microsoft.Common.CrossTargeting.targets/ImportAfter/Microsoft.TestPlatform.CrossTargeting.targets
@@ -0,0 +1,73 @@
+
+
+
+
+
+
+
+ <_TargetFramework Include="$(TargetFrameworks)" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ VSTest
+
+
+
diff --git a/src/redist/project.json b/src/redist/project.json
index 5d219b920..4ebcd14a3 100644
--- a/src/redist/project.json
+++ b/src/redist/project.json
@@ -23,8 +23,8 @@
"Microsoft.CodeAnalysis.Build.Tasks": "2.0.0-beta6-60922-08",
"System.Runtime.Serialization.Xml": "4.1.1",
"NuGet.Build.Tasks": "3.6.0-rc-1984",
- "Microsoft.TestPlatform.CLI": "15.0.0-preview-20161005-01",
- "Microsoft.TestPlatform.Build": "15.0.0-preview-20161005-01"
+ "Microsoft.TestPlatform.CLI": "15.0.0-preview-20161025-02",
+ "Microsoft.TestPlatform.Build": "15.0.0-preview-20161025-02"
},
"frameworks": {
"netcoreapp1.0": {
diff --git a/test/dotnet-test3.Tests/GivenDotnetTest3BuildsAndRunsTestFromCsprojForMultipleTFM.cs b/test/dotnet-test3.Tests/GivenDotnetTest3BuildsAndRunsTestFromCsprojForMultipleTFM.cs
new file mode 100644
index 000000000..52263b551
--- /dev/null
+++ b/test/dotnet-test3.Tests/GivenDotnetTest3BuildsAndRunsTestFromCsprojForMultipleTFM.cs
@@ -0,0 +1,48 @@
+// Copyright (c) .NET Foundation and contributors. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+
+using Microsoft.DotNet.Tools.Test.Utilities;
+using Xunit;
+using FluentAssertions;
+using Microsoft.DotNet.TestFramework;
+using Microsoft.DotNet.Cli.Utils;
+using System.Runtime.InteropServices;
+
+namespace Microsoft.DotNet.Cli.Test3.Tests
+{
+ public class GivenDotnetTest3BuildsAndRunsTestFromCsprojForMultipleTFM : TestBase
+ {
+ [Fact]
+ public void TestsFromAGivenProjectShouldRunWithExpectedOutputForMultiTFM()
+ {
+ // project targeting net46 will not run in non windows machine.
+ if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
+ {
+ // Copy DotNetCoreTestProject project in output directory of project dotnet-vstest.Tests
+ string testAppName = "VSTestDesktopAndNetCoreApp";
+ TestInstance testInstance = TestAssetsManager.CreateTestInstance(testAppName);
+
+ string testProjectDirectory = testInstance.TestRoot;
+
+ // Restore project VSTestDotNetCoreProject
+ new Restore3Command()
+ .WithWorkingDirectory(testProjectDirectory)
+ .Execute()
+ .Should()
+ .Pass();
+
+ // Call test3
+ CommandResult result = new Test3Command().WithWorkingDirectory(testProjectDirectory).ExecuteWithCapturedOutput("");
+
+ // Verify
+ // for target framework net46
+ result.StdOut.Should().Contain("Total tests: 3. Passed: 2. Failed: 1. Skipped: 0.");
+ result.StdOut.Should().Contain("Passed TestNamespace.VSTestTests.VSTestPassTestDesktop");
+
+ // for target framework netcoreapp1.0
+ result.StdOut.Should().Contain("Total tests: 3. Passed: 1. Failed: 2. Skipped: 0.");
+ result.StdOut.Should().Contain("Failed TestNamespace.VSTestTests.VSTestFailTestNetCoreApp");
+ }
+ }
+ }
+}
diff --git a/test/dotnet-test3.Tests/GivenDotnetTest3BuildsAndRunsTestfromCsproj.cs b/test/dotnet-test3.Tests/GivenDotnetTest3BuildsAndRunsTestfromCsproj.cs
index f737027d2..98d8229dd 100644
--- a/test/dotnet-test3.Tests/GivenDotnetTest3BuildsAndRunsTestfromCsproj.cs
+++ b/test/dotnet-test3.Tests/GivenDotnetTest3BuildsAndRunsTestfromCsproj.cs
@@ -6,6 +6,7 @@ using Xunit;
using FluentAssertions;
using Microsoft.DotNet.TestFramework;
using Microsoft.DotNet.Cli.Utils;
+using System.IO;
namespace Microsoft.DotNet.Cli.Test3.Tests
{
@@ -28,12 +29,38 @@ namespace Microsoft.DotNet.Cli.Test3.Tests
.Pass();
// Call test3
- CommandResult result = new Test3Command().WithWorkingDirectory(testProjectDirectory).ExecuteWithCapturedOutput("/p:TargetFramework=netcoreapp1.0");
+ CommandResult result = new Test3Command().WithWorkingDirectory(testProjectDirectory).ExecuteWithCapturedOutput("--framework netcoreapp1.0");
// Verify
result.StdOut.Should().Contain("Total tests: 2. Passed: 1. Failed: 1. Skipped: 0.");
result.StdOut.Should().Contain("Passed TestNamespace.VSTestTests.VSTestPassTest");
result.StdOut.Should().Contain("Failed TestNamespace.VSTestTests.VSTestFailTest");
}
+
+ [Fact]
+ public void TestWillNotBuildTheProjectIfNoBuildArgsIsGiven()
+ {
+ // Copy DotNetCoreTestProject project in output directory of project dotnet-vstest.Tests
+ string testAppName = "VSTestDotNetCoreProject";
+ TestInstance testInstance = TestAssetsManager.CreateTestInstance(testAppName);
+
+ string testProjectDirectory = testInstance.TestRoot;
+
+ // Restore project VSTestDotNetCoreProject
+ new Restore3Command()
+ .WithWorkingDirectory(testProjectDirectory)
+ .Execute()
+ .Should()
+ .Pass();
+
+ string expectedError = Path.Combine(testProjectDirectory, @"bin\Debug\netcoreapp1.0\VSTestDotNetCoreProject.dll");
+ expectedError = "The test source file " + "\""+ expectedError + "\"" + " provided was not found.";
+
+ // Call test3
+ CommandResult result = new Test3Command().WithWorkingDirectory(testProjectDirectory).ExecuteWithCapturedOutput("--noBuild");
+
+ // Verify
+ result.StdOut.Should().Contain(expectedError);
+ }
}
}
\ No newline at end of file