NSpec
NSpec copied to clipboard
Feature: A class/method attribute to allow for better naming
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()
{ }
}
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.
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.
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).
@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?
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!
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.
Best wishes for a speedy recovery!