stryker-mutator / stryker-net

Mutation testing for .NET core and .NET framework!
https://stryker-mutator.io
Apache License 2.0
1.76k stars 175 forks source link

Add multiple targetframework support #137

Closed yaelkeemink closed 1 year ago

yaelkeemink commented 5 years ago

At the moment we do not support multiple targetframeworks to be build an tested. We would like to see that we get all targetframeworks from the csproj and build for all the targetframeworks and mutation test all these builds.

For a first iteration we should make it possible to select the targetframework to build for through an option. We should probably set a default, for example always the latest dotnet version detected instead of the first targetframework found by buildalyzer)

rouke-broersma commented 5 years ago

We should investigate whether it is actually necessary to run tests in multiple target frameworks

rouke-broersma commented 5 years ago

Have not seen any actual issues so closing this for now.

rouke-broersma commented 3 years ago

Blocked by #578

StefH commented 2 years ago

Is this error related?

Initial build of targeted project failed. Please make sure the targeted project is buildable. You can reproduce this error yourself using: "dotnet build "WireMock.Net.Tests""

[20:39:33 INF] Logging enabled at level Info
Version: 1.2.2

[20:39:33 DBG] Stryker started with options: {"MsBuildPath": null, "DevMode": false, "BasePath": "C:\\Dev\\GitHub\\WireMock.Net\\test\\WireMock.Net.Tests", "OutputPath": "C:\\Dev\\GitHub\\WireMock.Net\\test\\WireMock.Net.Tests\\StrykerOutput\\2022-01-19.20-39-33", "ReportFileName": "mutation-report", "SolutionPath": "../../WireMock.Net Solution.sln", "TargetFramework": "net5.0", "LogOptions": {"LogToFile": false, "LogLevel": "Debug", "$type": "LogOptions"}, "MutationLevel": "Standard", "Thresholds": {"High": 80, "Low": 60, "Break": 0, "$type": "Thresholds"}, "AdditionalTimeout": 5000, "LanguageVersion": "Default", "Concurrency": 4, "ProjectUnderTestName": "WireMock.Net.csproj", "TestProjects": [], "TestCaseFilter": "", "WithBaseline": false, "Reporters": ["Progress", "Html"], "BaselineProvider": "Disk", "AzureFileStorageUrl": "", "AzureFileStorageSas": "", "DashboardUrl": "https://dashboard.stryker-mutator.io", "DashboardApiKey": null, "Since": false, "SinceTarget": "master", "DiffIgnoreChanges": [], "FallbackVersion": "master", "ModuleName": "", "ReportTypeToOpen": null, "Mutate": [{"Glob": {"Tokens": [{"TrailingPathSeparator": {"Value": "\\", "$type": "PathSeparatorToken"}, "LeadingPathSeparator": null, "$type": "WildcardDirectoryToken"}, {"$type": "WildcardToken"}], "$type": "Glob"}, "IsExclude": false, "TextSpans": [{"Start": 0, "End": 2147483647, "Length": 2147483647, "IsEmpty": false, "$type": "TextSpan"}], "$type": "FilePattern"}], "IgnoredMethods": [], "ExcludedMutations": [], "ExcludedLinqExpressions": [], "OptimizationMode": "CoverageBasedTest", "ProjectName": "", "ProjectVersion": "", "$type": "StrykerOptions"}
[20:39:33 INF] Identifying project to mutate.
[20:39:33 DBG] Using C:\Dev\GitHub\WireMock.Net\test\WireMock.Net.Tests\WireMock.Net.Tests.csproj as test project
[20:39:33 DBG] Analyzing solution file ../../WireMock.Net Solution.sln
[20:39:33 DBG] Analyzing project file C:\Dev\GitHub\WireMock.Net\test\WireMock.Net.Tests\WireMock.Net.Tests.csproj
[20:39:38 DBG] Using C:\Dev\GitHub\WireMock.Net\src\WireMock.Net\WireMock.Net.csproj as project under test
[20:39:38 INF] The project C:\Dev\GitHub\WireMock.Net\src\WireMock.Net\WireMock.Net.csproj will be mutated.
[20:39:38 DBG] Analyzing solution file ../../WireMock.Net Solution.sln
[20:39:38 DBG] Analyzing project file C:\Dev\GitHub\WireMock.Net\src\WireMock.Net\WireMock.Net.csproj
[20:39:42 DBG] Skipping auto-generated code file: C:\Dev\GitHub\WireMock.Net\src\WireMock.Net\obj\Debug\net5.0\.NETCoreApp,Version=v5.0.AssemblyAttributes.cs
[20:39:42 DBG] Skipping auto-generated code file: C:\Dev\GitHub\WireMock.Net\src\WireMock.Net\obj\Debug\net5.0\WireMock.Net.AssemblyInfo.cs
[20:39:42 INF] Analysis complete.
[20:39:42 INF] Building test project C:\Dev\GitHub\WireMock.Net\test\WireMock.Net.Tests\WireMock.Net.Tests.csproj (1/1)
[20:39:42 DBG] Started initial build using dotnet build
[20:39:42 DBG] Initial build using path: ../../WireMock.Net Solution.sln
[20:39:42 INF] Time Elapsed 00:00:09.2898531

Microsoft (R) Build Engine version 17.0.0+c9eb9dd64 for .NET
Copyright (C) Microsoft Corporation. All rights reserved.

MSBUILD : error MSB1009: Project file does not exist.
Switch: ../../WireMock.Net Solution.sln

Initial build of targeted project failed. Please make sure the targeted project is buildable. You can reproduce this error yourself using: "dotnet build "WireMock.Net.Tests""

Some info:

Config file:

{
    "stryker-config":
    {
        "solution": "../../WireMock.Net Solution.sln",
        "project": "WireMock.Net.csproj",
        "target-framework": "net5.0"
    }
}

Main project WireMock.Net + has WireMock.Net.Tests have multiple frameworks defined.

rouke-broersma commented 1 year ago

The 3rd task doesn't seem that neccesary. Closing until we get a user ask for this feature.