Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Inconclusive specs when using a behavior with a generic type parameter #361

Open
SimonLissack opened this issue Apr 17, 2018 · 0 comments
Open

Comments

@SimonLissack
Copy link

Resharper version: 2017.3
Visual Studio version: 2017/2015
MSpec runner version: 2.0.2

I've come across an issue with the plugin when using a behavior which has a generic type parameter. When the behaviors are run, the result of it is "Inconclusive: Test not run"

As far as I can tell this is tied to the plugin and not MSpec itself, I've tested it using the command line MSpec runner and the tests fail/succeed as expected.

Repro of the issue:

Nuget versions:
Machine.Specifications v0.12.0 (latest)
Machine.Specifications.Should v0.11.0 (latest)

using Machine.Specifications;

namespace MSpecBehaviorRepro
{
    public class BehaviorTest
    {
        public class when_using_behaviors
        {
            Establish context = () =>
            {
                _testClass = new ConcreteClass
                {
                    AssertionValue = "Hello world!"
                };
            };

            Behaves_like<NormalBehavior> normal_behavior;
            Behaves_like<GenericBehavior<ConcreteClass>> generic_behavior;
            Behaves_like<GenericBehavior<AbstractClass>> failing_generic_behavior;
        }

        static AbstractClass _testClass;

        [Behaviors]
        public class NormalBehavior
        {
            It should_have_an_assertion = () => _testClass.AssertionValue.ShouldEqual("Hello world!");
        }

        [Behaviors]
        public class GenericBehavior<T> where T : AbstractClass
        {
            It should_have_an_assertion = () => _testClass.AssertionValue.ShouldEqual("Hello world!");
            It should_be_the_correct_type = () => TestHelper.GetTypeName<T>().ShouldEqual(_testClass.GetType().Name);
        }

        public abstract class AbstractClass
        {
            public string AssertionValue { get; set; }
        }

        public class ConcreteClass : AbstractClass
        {
        }

        static class TestHelper
        {
            public static string GetTypeName<T>()
            {
                return typeof(T).Name;
            }
        }
    }
}

From visual studio:
image

When using the MSpec command line runner (failing as expected):
image

Verbose logs from the runner:

2018.04.17 12:18:36.617    INFO BuildStage started
2018.04.17 12:18:36.617    INFO Build policy: Automatic
2018.04.17 12:18:36.941    INFO 1 projects built
2018.04.17 12:18:36.941 VERBOSE     MSpecBehaviorRepro
2018.04.17 12:18:36.941    INFO BuildStage completed
2018.04.17 12:18:36.946    INFO RefreshProjectPropertiesStage started
2018.04.17 12:18:36.947    INFO RefreshProjectPropertiesStage completed
2018.04.17 12:18:36.948    INFO DiscoveryStage started
2018.04.17 12:18:36.948    INFO Test exploration required for 1 projects
2018.04.17 12:18:36.948 VERBOSE     MSpecBehaviorRepro
2018.04.17 12:18:36.972    INFO DiscoveryStage completed
2018.04.17 12:18:36.972    INFO BuildPipelineStage started
2018.04.17 12:18:36.972    INFO BuildPipelineStage completed
2018.04.17 12:18:36.972    INFO ApplyRulesStage started
2018.04.17 12:18:36.973    INFO Got 9 elements (0 explicit) to run
2018.04.17 12:18:36.973 VERBOSE Marking 9 elements as Pending
2018.04.17 12:18:36.974 VERBOSE Marking elements as Pending completed
2018.04.17 12:18:36.974 VERBOSE Distributing 9 elements into runs
2018.04.17 12:18:36.975 VERBOSE Distributing elements completed
2018.04.17 12:18:36.976    INFO Created 1 unit-test runs
2018.04.17 12:18:36.976    INFO ApplyRulesStage completed
2018.04.17 12:18:36.976    INFO RunTestsStage started
2018.04.17 12:18:36.976 VERBOSE Running up to 1 unit-test runs in parallel
2018.04.17 12:18:36.981    INFO Run: 902cc529-bdfe-415c-9f9c-5f113c8b5c59 - Started
2018.04.17 12:18:36.981 VERBOSE     Provider: Machine.Specifications
    Project: None
    Target Framework: .NETFramework,Version=v4.5.2
    Strategy: Machine.Specifications.ReSharperProvider.RunStrategies.MspecOutOfProcessUnitTestRunStrategy
    Runtime Enviroment:
        Platform Type: x64
        Platform Version: v4_5
2018.04.17 12:18:36.982    INFO Starting process: C:\Users\simon.lissack\AppData\Local\JetBrains\Installations\ReSharperPlatformVs15_1cd52f3e_000\JetBrains.ReSharper.TaskRunner.CLR45.x64.exe "127.0.0.1" "22775" "902cc529-bdfe-415c-9f9c-5f113c8b5c59"
2018.04.17 12:18:36.986    INFO Started process with pid 6940
2018.04.17 12:18:37.624    WARN Run: 902cc529-bdfe-415c-9f9c-5f113c8b5c59 - Cannot find element for task <e545ac96-c38c-40e2-be7c-cf95edf89297> of type <MspecTestAssemblyTask>
2018.04.17 12:18:37.984    INFO Process C:\Users\simon.lissack\AppData\Local\JetBrains\Installations\ReSharperPlatformVs15_1cd52f3e_000\JetBrains.ReSharper.TaskRunner.CLR45.x64.exe:6940 has exited
2018.04.17 12:18:37.984    INFO Run: 902cc529-bdfe-415c-9f9c-5f113c8b5c59 - Completed
2018.04.17 12:18:37.984    INFO RunTestsStage completed
2018.04.17 12:18:37.985    INFO Finishing run
2018.04.17 12:18:37.985    WARN Element MSpecBehaviorRepro.BehaviorTest+when_using_behaviors.generic_behavior.MSpecBehaviorRepro.BehaviorTest+GenericBehavior`1.should_be_the_correct_type was left pending after its run completion.
2018.04.17 12:18:37.985    WARN Element MSpecBehaviorRepro.BehaviorTest+when_using_behaviors.generic_behavior.MSpecBehaviorRepro.BehaviorTest+GenericBehavior`1.should_have_an_assertion was left pending after its run completion.
2018.04.17 12:18:37.985    WARN Element MSpecBehaviorRepro.BehaviorTest+when_using_behaviors.failing_generic_behavior.MSpecBehaviorRepro.BehaviorTest+GenericBehavior`1.should_be_the_correct_type was left pending after its run completion.
2018.04.17 12:18:37.985    WARN Element MSpecBehaviorRepro.BehaviorTest+when_using_behaviors.failing_generic_behavior.MSpecBehaviorRepro.BehaviorTest+GenericBehavior`1.should_have_an_assertion was left pending after its run completion.
2018.04.17 12:18:37.986    INFO Run is finished
@robertcoltheart robertcoltheart transferred this issue from machine/machine.specifications.runner.resharper Jan 8, 2019
@robertcoltheart robertcoltheart added this to the 2.0.0 milestone Jun 12, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants