public async Task VerifyExpectedBehaviors(string projectPath, bool crossTargeting, bool implicitlyTriggeredBuild, string[] startupProjects, bool globalOptionEnabled, bool expectTargetFrameworkSet)
        {
            var projectService = IProjectServiceFactory.Create();

            var unconfiguredProject = UnconfiguredProjectFactory.Create(fullPath: projectPath);

            ConfiguredProject?configuredProject;

            if (crossTargeting)
            {
                var dimensions = Empty.PropertiesMap
                                 .Add("Configuration", "Debug")
                                 .Add("Platform", "AnyCPU")
                                 .Add("TargetFramework", "netcoreapp1.0");
                var projectConfiguration = new StandardProjectConfiguration("Debug|AnyCPU|netcoreapp1.0", dimensions);
                configuredProject = ConfiguredProjectFactory.Create(projectConfiguration: projectConfiguration, unconfiguredProject: unconfiguredProject);
            }
            else
            {
                var dimensions = Empty.PropertiesMap
                                 .Add("Configuration", "Debug")
                                 .Add("Platform", "AnyCPU");
                var projectConfiguration = new StandardProjectConfiguration("Debug|AnyCPU", dimensions);
                configuredProject = ConfiguredProjectFactory.Create(projectConfiguration: projectConfiguration, unconfiguredProject: unconfiguredProject);
            }

            var activeDebugFrameworkServices = IActiveDebugFrameworkServicesFactory.ImplementGetActiveDebuggingFrameworkPropertyAsync("myFramework1.0");

            var implicitlyTriggeredBuildState = IImplicityTriggeredBuildStateFactory.Create(implicitlyTriggeredBuild, startupProjects);

            var projectSystemOptions = IProjectSystemOptionsFactory.ImplementGetPreferSingleTargetBuildsForStartupProjectsAsync(ct => globalOptionEnabled);

            var provider = new StartupProjectSingleTargetGlobalBuildPropertyProvider(
                projectService,
                configuredProject,
                activeDebugFrameworkServices,
                implicitlyTriggeredBuildState,
                projectSystemOptions);

            var globalProperties = await provider.GetGlobalPropertiesAsync(CancellationToken.None);

            if (expectTargetFrameworkSet)
            {
                Assert.Equal(expected: 1, actual: globalProperties.Count);
                Assert.Equal(expected: "myFramework1.0", actual: globalProperties[ConfigurationGeneral.TargetFrameworkProperty]);
            }
            else
            {
                Assert.Empty(globalProperties);
            }
        }