NSpec icon indicating copy to clipboard operation
NSpec copied to clipboard

Feature: A class/method attribute to allow for better naming

Open BennieCopeland opened this issue 7 years ago • 7 comments

For the most part using void my_super_cool_context_method() works, but there are a few times where I would like to be able to use a real string to describe the context. An example would be:

[Name("describe SomeGenericClass{T}", "focus")]
class describe_SomeGenericClass
{
    [Name("describe SomeMethod(int)")]
    void describe_SomeMethod1()
    { }

    [Name("describe SomeMethod(int, int) overload")]
    void describe_SomeMethod2()
    { }
}

BennieCopeland avatar Mar 29 '17 17:03 BennieCopeland

The whole idea behing NSpec, for what we got, is low-to-zero ceremony. Going without attributes I guess came as a consequence of that.

I understand that this attribute would be opt-in, only if you want some not-allowed characters in your test case/context names. Still, I would go with some more descriptive naming: to keep with example, something like:

class describe_SomeGenericClass
{
    void when_SomeMethod_gets_a_number()
    { }

    void when_SomeMethod_gets_two_numbers()
    { }
}

Or, changing also structure:

class describe_SomeGenericClass
{
    void when_calling_SomeMethod
    {
        context["and passing one number"] = () =>
        {
        };

        context["and passing two numbers"] = () =>
        {
        };
    }
}

That goes well with the BDD/RSpec roots of this project, and makes up for a nice output with its contexts and test cases. But of course that might very well be my personal taste. Let's see if @amirrajan has any better suggestion or what else.

Final note: not sure what that "focus" attribute parameter is there for.

BrainCrumbz avatar Mar 30 '17 17:03 BrainCrumbz

Lol, "focus" is another one of your undocumented features. If you add a [Tag("focus")] or a context["...", "focus"], it["...", "focus"], NSpec will only run those subset of tests. I find it useful when I'm driving out a design with tests. I was showing that [Name("...", "focus")] could also possibly support tags, but thinking about it now, you can just add the [Tag()] attribute as well.

BennieCopeland avatar Mar 30 '17 18:03 BennieCopeland

focus and Tag are definitely "advanced" features. I'm all for support advanced features that help "perfect" a test case (either in helping author tests or read them).

amirrajan avatar Mar 30 '17 23:03 amirrajan

@BennieCopeland 😸 right-click, Run Selected Tests is my "focus". Jokes apart, I knew about focus, you see it around in other test frameworks as well. I just didn't get suggested usage there. Thanks for clarifying!

@amirrajan what about a new [Name()] attribute like the one suggested here?

GiuseppePiscopo avatar Mar 31 '17 09:03 GiuseppePiscopo

What about a new [Name()] attribute like the one suggested here?

It should be fairly straight forward to implement if @BennieCopeland wants to give it a shot. Bennie, I'd be happy to provide the touch points, video/pairing sessions, anything you need to build this feature (short of doing it myself). I think it would be a great addition. Let me know if you're interested!

amirrajan avatar Apr 01 '17 15:04 amirrajan

Sure. It will be a few days though. I was admitted to the hospital yesterday for an infection and will be here for a few more days.

Sent from my iPhone

On Apr 1, 2017, at 17:28, Amir Rajan [email protected] wrote:

What about a new [Name()] attribute like the one suggested here?

It should be fairly straight forward to implement if @BennieCopeland wants to give it a shot. Bennie, I'd be happy to provide the touch points, video/pairing sessions, anything you need to build this feature (short of doing it myself). I think it would be a great addition. Let me know if you're interested!

― You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.

BennieCopeland avatar Apr 01 '17 16:04 BennieCopeland

Best wishes for a speedy recovery!

BrainCrumbz avatar Apr 03 '17 09:04 BrainCrumbz