I have seen many post here for Ruby on Rails. Our company is planning to make a key decision to develop our software in RoR or PHP. I am really concerned with RoR hosting providers and I did read something regarding performance issues with RoR in www.rubyonrails.org site.
Can anybody clarify whether this is true?
What precautions do I need to take before making such a decision, though I love to develop stuff on Ruby on Rails (gained practice as an enthusiast): basically the reality check?
Rally Software Development (www.rallydev.com) located in Boulder, CO
is a dynamic, growing company that provides software-driven
enterprises with the knowledge, coaching and tooling needed to
succeed with Agile development practices.
Due to our success, we are seeking an experienced and motivated Agile
Development Consultant and Engagement Manager. An ideal candidate
would have experience and interest in extending skills in the
following areas.
Qualifications:
• Consulting background with process, change management with
Agile preferred– you will be working with multiple clients through on
site collaboration and remote support
• Coaching Agile project teams - bringing experience with
methods such as Scrum, XP, Lean, FDD, DSDM, or Crystal.
• Vendor and Engagement management experience - experience
leading consulting engagements, managing scope, time, cost, quality,
risk, and stakeholder expectations.
• Solutions selling experience - Identifying new areas of
opportunity and proposing
potential solutions.
• Training experience – we develop our own collateral in close
partnership with leading experts in the agile community and deliver
training to customer teams.
• Experience in leading technical teams - coaching, teaching
and guiding people in the various roles in a project driven
organization.
• Facilitation skills in leading planning meetings, reviews,
and retrospectives.
• Excellent presentation skills -
• Willingness to travel 50%– we're a company that is expanding
within the US and beyond.
• 7 years or more experience in technology/software
organizations.
• Certified ScrumMaster (Practitioner or Trainer), Certified
Facilitator, or equivalent are all plusses.
Locations:, Anywhere in the continental US near a major airport.
Culture: At Rally, we value teamwork, an ability to meet commitments,
skill, and a successful track record. Our company is comprised of
people who are passionate about the software industry and the success
that implementing Agile Development practices can bring our clients.
We are looking for those who share our passion and the desire to work
with the best and brightest.
In our Professional Services organization we actively encourage
speaking engagements and participation in agile committees. Our
Coaches have been key-note speakers, organizers of agile conferences
and authors of articles and whitepapers.
We offer excellent compensation for proven performers, stock options
and generous benefits with an exceptional opportunity to grow. If
you are interested in being considered or would simply like more
information about what it's like to work here at Rally, one of our
coaches would be happy to discuss the possibilities. Please email
jobs@....
I'll be there.
Mike Corum
-----Original Message-----
From: xpstl@yahoogroups.com [mailto:xpstl@yahoogroups.com]
Sent: Thursday, January 03, 2008 2:28 AM
To: xpstl@yahoogroups.com
Subject: [xpstl] Digest Number 689
There is 1 message in this issue.
Topics in this digest:
1. [Mid Mo XP] January Meeting Announcement
From: James Carr
Message
________________________________________________________________________
1. [Mid Mo XP] January Meeting Announcement
Posted by: "James Carr" james.r.carr@... jay_c_the_man
Date: Wed Jan 2, 2008 9:36 pm ((PST))
HI All,
The next meeting of the mid mo xp usergroup will be Wed, January 16th
at 6:30pm, our guest speaker will be Ron Jeffries. As always, we will
be meeting at CARFAX, INC's data center in Columbia, MO on Maguire
Blvd.
Please RSVP by Jan 14th we can get a head count for refreshments and
seating.
If you are coming from St.Louis, these directions are handy:
http://maps.google.com/maps?f=d&hl=en&geocode=&time=&date=&ttype=&saddr=
St.Louis,+MO&daddr=Maguire+Blvd,+Columbia,+MO+65201+&sll=38.62757,-90.19
896&sspn=0.451663,1.2854&ie=UTF8&z=9&om=1
Jeff City:
http://maps.google.com/maps?f=d&hl=en&geocode=&time=&date=&ttype=&saddr=
Jefferson+City,+MO&daddr=Maguire+Blvd,+Columbia,+MO+65201&sll=38.7938,-9
1.24049&sspn=0.901206,2.570801&ie=UTF8&z=10&om=1
Thanks,
James
Messages in this topic (1)
________________________________________________________________________
________________________________________________________________________
------------------------------------------------------------------------
Yahoo! Groups Links
------------------------------------------------------------------------
--------------------------------------------------------------------------------\
-------------------------
This e-mail message may contain privileged and/or confidential information, and
is intended to be received only by persons entitled to receive such information.
If you have received this e-mail in error, please notify the sender immediately.
Please delete it and all attachments from any servers, hard drives or any other
media. Other use of this e-mail by you is strictly prohibited.
All e-mails and attachments sent and received are subject to monitoring, reading
and archival by Monsanto, including its subsidiaries. The recipient of this
e-mail is solely responsible for checking for the presence of "Viruses" or other
"Malware". Monsanto, along with its subsidiaries, accepts no liability for any
damage caused by any such code transmitted by or accompanying this e-mail or any
attachment.
--------------------------------------------------------------------------------\
-------------------------
Hi,
There is a relatively new group called Agile-ANN, where we hope to
draw a large crowd interested in Agile Announcements. (yes, actually
interested)
The hope is that regular discussion groups will
receive...fewer...announcements.
See here: http://finance.groups.yahoo.com/group/Agile-ANN/
The announcements can be about almost anything:
* courses
* jobs or gigs that are open
* new or existing groups
* group meetings
* services offered
* etc.
And any discussion of such announcements.
These will be announcements for any flavor of lean or
agile. Including Lean/Agile that is oriented toward software dev and
toward more business implementations.
Scope is worldwide.
Hope this helps. Hope everyone joins...I think you'll find some of
these announcements useful.
Regards, Joe
Gallant writes a failing test, specifying the desired behavior.
[Evil] Goofus deliberately writes the simplest code possible that...
1. Passes all tests.
- and -
2. Is wrong.
Now there are some limitations on how evil The Evil Programmer is allowed to be. Otherwise the whole exercise can be quite wasteful: The evil programmer's "bad / wrong" implementation can't be any more complex than the correct implementation.
You might want to restrict the Evil programmer to *not* hard code arbitrary constants, like having the 'getName()' method return "Fred Brown", knowing that this is what your test used in the setter. Otherwise, your tests will be "better," in a trivial way, but clearly more costly; like doubling the number of tests you need to write, typically.
I did have to limit the evilness in another way (or at least explain it better) to assure some developers that they don't have to use random numbers generators in their tests to force The Evil Programmer to do a real implementation. Use of random number generators can make it difficult to reproduce and debug failed tests unless you're careful to report the seed values used, and to provide a way to force a test to use a given seed value, to reproduce the failing conditions.
Subject: [xpstl] Observation I had about TDD with and without pairing
[...] an effective pairing situation.
* First person writes a test, and knows what they're trying to accomplish in this test. * Second person is obnoxious (productively so!) and writes something else entirely, probably something much more trivial, to get the test to pass. P2 then throws the keyboard at P1, laughing at their distress. * First person writes another test, vainly trying to get the right code out of his idiotic pair, who just can't write the right code. * Second person laughs hysterically and writes something different than the test writer wanted. He cackles gleefully.
You mention CodeRush and Refactor. Are you able to get them to play nicely together? I hadn't used Code Rush before, but I stumbled on it when doing some prototype Linq stuff on my own. Resharper doesn't handle the new 3.5 language constructs, and Code Rush does, so I started using the evaluation version. How do you configure them to use both?
-- Jody Breshears
Christopher Marlowe - "Money can't buy love, but it improves your bargaining position."
From: xpstl@yahoogroups.com [mailto:xpstl@yahoogroups.com] On Behalf Of Jody Breshears
You mention CodeRush and Refactor. Are you able to get them to play nicely together? I hadn't used Code Rush before, but I stumbled on it when doing some prototype Linq stuff on my own. Resharper doesn't handle the new 3.5 language constructs, and Code Rush does, so I started using the evaluation version. How do you configure them to use both?
Very useful in this case. The following code seems to do what you're looking for unless I missed something.
I figured Task was responsible for reporting the time spent on it so I added that property using Linq Sum operator and everything got simpler.
Toby
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Tasking
{
class Program
{
static void Main(string[] args)
{
canGetSumOf2CardsFromParentChild();
}
public static void canGetSumOf2CardsFromParentChild(){
List<Task> list = new List<Task>(); Task task1 = new Task(){Name="test1"};
Task task2 = new Task(){Name="test2"};
list.Add(task1);
TimeCard timeCard1 = new TimeCard(){ Time=new TimeSpan(0,10,0), TimeStamp=DateTime.Parse("10/10/2007")};
TimeCard timeCard2 = new TimeCard(){ Time=new TimeSpan(0,15,0), TimeStamp=DateTime.Parse("10/10/2007")};
task1.TimeCards.Add(timeCard1);
task2.TimeCards.Add(timeCard2);
task1.Children.Add(task2);
TaskReporter reporter = new TaskReporter(list);
TimeSpan? totalTime = reporter.getTotalTime();
Console.WriteLine("Test - {0}", totalTime == new TimeSpan(0, 25, 0)?"Passed":"Failed");
}
}
public class TaskReporter
{
private readonly List<Task> list = new List<Task>();
public TaskReporter(List<Task> list)
{
this.list = list;
}
public System.TimeSpan? getTotalTime()
{
double totalSeconds = list.Sum(t => t.TotalTaskTime);
return new TimeSpan(0, 0, (int)Math.Truncate(totalSeconds));
}
}
public class Task
{
private string name;
private bool isProductive;
private List<Task> children = new List<Task>();
private List<TimeCard> timeCards = new List<TimeCard>();
public string Name
{
get { return name; }
set { name = value;}
}
public bool IsProductive
{
get { return isProductive; }
set { isProductive = value; }
}
public List<TimeCard> TimeCards
{
get { return timeCards; }
set { timeCards = value; }
}
public List<Task> Children
{
get { return children; }
set { children = value; }
}
/// <summary>
/// Returns total of timecards for this task + total time from children tasks
/// </summary>
public double TotalTaskTime
{
get
{
return TimeCards.Sum(t => t.Time.TotalSeconds) +
Children.Sum(c => c.TotalTaskTime);
}
}
}
public class TimeCard
{
TimeSpan _time;
DateTime _stamp;
public TimeSpan Time
{
get { return _time; }
set { _time = value; }
}
public DateTime TimeStamp
{
get { return _stamp; }
set { _stamp = value; }
}
}
}
--- In xpstl@yahoogroups.com, "Jody Breshears" <jody.breshears@...> wrote: > > I am having trouble getting some linq tests down to small bites, and > wondered if anyone else had some suggestions. > > I had this code, used to read a simple collection of tasks, and get the > time. > > public class Task : ITask { > private string name; > private bool isProductive; > private TaskList children = new TaskList(); > private List<TimeCard> timeCards = new List<TimeCard>(); > > public List<TimeCard> TimeCards { > get { return timeCards; } > set { timeCards = value; } > } > > public string Name { > get { return name; } > set { > name = value; > } > } > > public bool IsProductive { > get { return isProductive; } > set {isProductive = value;} > } > > public TaskList Children { > get { return children; } > set{children=value;} > } > } > > > public class TaskReporter { > private readonly List<Task> list = new List<Task>(); > > public TaskReporter(List<Task> list) { > this.list = list; > } > > public System.TimeSpan? getTotalTime() { > var query = from taskItem in list > select taskItem.TimeCards.Sum(timeCard => > timeCard.Time.TotalSeconds ); > double totalSeconds = 0; > > totalSeconds = GetTotalSecondsFromQuery(query); > return new TimeSpan(0,0,(int)Math.Truncate(totalSeconds)); > } > > private double GetTotalSecondsFromQuery(IEnumerable<double> query) { > double totalSeconds = 0; > foreach (double item in query) { > totalSeconds+= item; > } > return totalSeconds; > } > } > > I wrote this test, to allow it to read a heirarchical list. > [Test] > public void canGetSumOf2CardsFromParentChild(){ > List<Task> list = new List<Task>(); > Task task = new Task(){Name="test"}; > Task task2 = new Task(){Name="test2"}; > > list.Add(task); > TimeCard timeCard = new TimeCard(){ Time=new TimeSpan(0,10,0), > TimeStamp=DateTime.Parse("10/10/2007")}; > TimeCard timeCard2 = new TimeCard(){ Time=new TimeSpan(0,15,0), > TimeStamp=DateTime.Parse("10/10/2007")}; > task.TimeCards.Add(timeCard); > task2.TimeCards.Add(timeCard2); > > task.Children.Add(task2); > > TaskReporter reporter = new TaskReporter(list); > TimeSpan? totalTime = reporter.getTotalTime(); > Assert.That(totalTime, Is.EqualTo(new TimeSpan(0, 25, 0))); > } > > One freaking hour later, I had this code: > > public System.TimeSpan? getTotalTime() { > TimeSpan? result = TimeSpan.Zero; > foreach (ITask task in list) { > result += getTimeForTask(task ); > } > return result; > } > > public TimeSpan? getTimeForTask(ITask task){ > var query = from card in task.TimeCards > select card.Time; > TimeSpan? totalSeconds = GetTotalSecondsFromQuery(query); > foreach (Task childTask in task.Children) { > totalSeconds += getTimeForTask(childTask); > } > return totalSeconds; > > } > //todo:Look at aggregate > private TimeSpan? GetTotalSecondsFromQuery(IEnumerable<TimeSpan?> > query) { > TimeSpan? totalSeconds = new TimeSpan(); > foreach (TimeSpan? item in query) { > totalSeconds+= item; > } > return totalSeconds; > } > > Does anybody see smaller bites? > -- > Jody Breshears > > Christopher Marlowe - "Money can't buy love, but it improves your bargaining > position." >
> I'd love to see the blog post. Until I can manage to get myself into a
> situation where pair programming is allowed, I think this is going to be a
> struggle for me.
We are looking for a few good people here at CARFAX, in Columbia, MO,
and we pair on all production code ...
GB.
-- Jody Breshears
Christopher Marlowe - "Money can't buy love, but it improves your bargaining position."
You seem to take it for granted that effective pairing means that one
person is writing the test and the other is writing the code to make the
test pass. I've never done pairing with that adversarial approach.
Usually, my pair and I write the test case together and agree it's doing
what we want. Then we make it pass together. Are you advocating the
adversarial approach over the cooperative one?
Mark
Brian Button wrote:
>
> I'm working on a project for a client (that's right, they're letting
> *me* write code!), and I'm a team of one right now.
>
> That's important, because as I was writing my tests, I realized
> something. I *knew* the code I wanted to write for a
> given test, and I'd write that code without thinking about it to make
> my current test pass. I knew beforehand what I was
> doing, where I was going, and why. This led me to writing the exact
> code I expected to write as I wrote my test.
>
> Contrast this to how code is written test first when in an effective
> pairing situation.
>
> * First person writes a test, and knows what they're trying to
> accomplish in this test.
> * Second person is obnoxious (productively so!) and writes something
> else entirely, probably something much more
> trivial, to get the test to pass. P2 then throws the keyboard at P1,
> laughing at their distress.
> * First person writes another test, vainly trying to get the right
> code out of his idiotic pair, who just can't write
> the right code.
> * Second person laughs hysterically and writes something different
> than the test writer wanted. He cackles gleefully.
>
> and so it repeats.
>
> This creates a tension between test writer and code writer that
> results in much better, more simple code.
>
> That tension is missing without a pair, and it takes a tremendous
> amount of self-awareness and discipline to get to the
> same level of coding goodness without it.
>
> Has anyone else felt this? Is this so blatantly obvious that I've
> bored you all to tears?
>
> I'm planning on turning this into a blog post RSN, with a bit more
> detail and description.
>
> bab
>
> --
> Brian Button bbutton@... <mailto:bbutton%40agilestl.com>
> VP Engineering http://www.agilestl.com <http://www.agilestl.com>
> Asynchrony Solutions http://oneagilecoder.agilestl.com
> <http://oneagilecoder.agilestl.com>
> St. Louis, MO 636.399.3146
>
> Extreme Programming in St Louis - http://groups.yahoo.com/group/xpstl
> <http://groups.yahoo.com/group/xpstl>
>
>
--
Mark Balbes, Ph.D.
Vice President, Architecture
Asynchrony Solutions
mobile: 314-835-7800
email: mark.balbes@...
Brian Button wrote:
> * First person writes a test, and knows what they're trying to accomplish in
this test.
> * Second person is obnoxious (productively so!) and writes something else
entirely, probably something much more
> trivial, to get the test to pass. P2 then throws the keyboard at P1, laughing
at their distress.
> * First person writes another test, vainly trying to get the right code out of
his idiotic pair, who just can't write
> the right code.
> * Second person laughs hysterically and writes something different than the
test writer wanted. He cackles gleefully.
Luckily for me, I'm so obnoxious I annoy myself! ;)
Actually, I know I've run into this with the current series I'm working
on - but I think it's more that I haven't been as astute about
refactoring out duplication in the test code. Nothing motivates like a
pair. ;)
--
Cory Foy
http://www.cornetdesign.com
Ed Howland wrote:
> Does IronRuby work like JRuby where you can into .Net and .Net can
> call into Ruby? Does that allow you to script and test your .Net
> classes with a tool like RSpec?
Yes...sort of. It's in a very early stage. But they've done several
releases on RubyForge (yes, MS is releasing it on RubyForge), and there
are demos of hooking up to .NET:
http://weblogs.asp.net/scottgu/archive/2007/07/23/first-look-at-ironruby.aspx
> LINQ sounds interesting. In Rails, the ActiveRecord ORM layer hides a
> lot of pure SQL, so you can do a lot of queries in Ruby. but it
> doesn't go as far as LINQ. For instance, you can use an instance range
> class in place of the 'between' clause. E.g. :conditions => {
> :updated_at => start_time..end_time }
I'm thinking about it differently. Yes, you can use LINQ for SQL. But
you can also use it for objects. And the syntax is really syntactic
sugar for generics, so I'm more thinking about tricking it to be able to
write specs more like RSpec does.
> BTW, the project we are working on in our St. Louis Ruby Meetings is
> driven by RSpec. If anyone is interested in learning more about RSpec
> and BDD, come out to our meeting this coming Monday.
Wish I was still in the area! ;) If anyone is coming to the SQE Agile
Conference in Orlando next month, I'll be speaking (for Microsoft) and
would be happy to sit down and talk RSpec or any other cool things.
--
Cory Foy
http://www.cornetdesign.com
I am having trouble getting some linq tests down to small bites, and wondered if anyone else had some suggestions.
I had this code, used to read a simple collection of tasks, and get the time.
public class Task : ITask { private string name; private bool isProductive; private TaskList children = new TaskList(); private List<TimeCard> timeCards = new List<TimeCard>();
public List<TimeCard> TimeCards { get { return timeCards; } set { timeCards = value; } }
public string Name { get { return name; }
set { name = value; } }
public bool IsProductive { get { return isProductive; } set {isProductive = value;} }
public TaskList Children { get { return children; } set{children=value;} } }
public class TaskReporter { private readonly List<Task> list = new List<Task>();
public TaskReporter(List<Task> list) { this.list = list; }
public System.TimeSpan? getTotalTime() { var query = from taskItem in list select taskItem.TimeCards.Sum(timeCard => timeCard.Time.TotalSeconds ); double totalSeconds = 0;
totalSeconds = GetTotalSecondsFromQuery(query); return new TimeSpan(0,0,(int)Math.Truncate(totalSeconds)); }
I wrote this test, to allow it to read a heirarchical list. [Test] public void canGetSumOf2CardsFromParentChild(){ List<Task> list = new List<Task>();
Task task = new Task(){Name="test"}; Task task2 = new Task(){Name="test2"};
list.Add(task); TimeCard timeCard = new TimeCard(){ Time=new TimeSpan(0,10,0), TimeStamp=
DateTime.Parse("10/10/2007")}; TimeCard timeCard2 = new TimeCard(){ Time=new TimeSpan(0,15,0), TimeStamp=DateTime.Parse("10/10/2007")}; task.TimeCards.Add(timeCard); task2.TimeCards.Add(timeCard2);
Quoting Jody Breshears <jody.breshears@...>:
> I'd love to see the blog post. Until I can manage to get myself into a
> situation where pair programming is allowed, I think this is going to be a
> struggle for me.
We are looking for a few good people here at CARFAX, in Columbia, MO,
and we pair on all production code ...
GB.
Actually, I was about to post that VERY same question. I am at a client who *ahem* discourages pair programming. I am constantly finding myself ending up with code I intended to write. Just lately, I have been able to break away from that, and let myself be a little dumber (perhaps not such a long way to go.:) I ended up with an astounding result. I just wrote tests and dumb code till something jumped out at me, and ended up with a 2 line solution to a complex problem.
For me, the problem seems to boil down to taking smaller bites. When I write a test that I can get passing in less than 10 minutes, I seem to get more emergent design. When a test takes longer (say, 30 min to 1 hour) I end up with what I was expecting. Since I am constantly preaching "smaller bites" here, I am looking for ways to take my own medicine.
I'd love to see the blog post. Until I can manage to get myself into a situation where pair programming is allowed, I think this is going to be a struggle for me.
On Nov 8, 2007 9:38 AM, Brian Button <
bbutton@...> wrote:
I'm working on a project for a client (that's right, they're letting *me* write code!), and I'm a team of one right now.
That's important, because as I was writing my tests, I realized something. I *knew* the code I wanted to write for a
given test, and I'd write that code without thinking about it to make my current test pass. I knew beforehand what I was
doing, where I was going, and why. This led me to writing the exact code I expected to write as I wrote my test.
Contrast this to how code is written test first when in an effective pairing situation.
* First person writes a test, and knows what they're trying to accomplish in this test.
* Second person is obnoxious (productively so!) and writes something else entirely, probably something much more
trivial, to get the test to pass. P2 then throws the keyboard at P1, laughing at their distress.
* First person writes another test, vainly trying to get the right code out of his idiotic pair, who just can't write
the right code.
* Second person laughs hysterically and writes something different than the test writer wanted. He cackles gleefully.
and so it repeats.
This creates a tension between test writer and code writer that results in much better, more simple code.
That tension is missing without a pair, and it takes a tremendous amount of self-awareness and discipline to get to the
same level of coding goodness without it.
Has anyone else felt this? Is this so blatantly obvious that I've bored you all to tears?
I'm planning on turning this into a blog post RSN, with a bit more detail and description.
I'm working on a project for a client (that's right, they're letting *me* write
code!), and I'm a team of one right now.
That's important, because as I was writing my tests, I realized something. I
*knew* the code I wanted to write for a
given test, and I'd write that code without thinking about it to make my current
test pass. I knew beforehand what I was
doing, where I was going, and why. This led me to writing the exact code I
expected to write as I wrote my test.
Contrast this to how code is written test first when in an effective pairing
situation.
* First person writes a test, and knows what they're trying to accomplish in
this test.
* Second person is obnoxious (productively so!) and writes something else
entirely, probably something much more
trivial, to get the test to pass. P2 then throws the keyboard at P1, laughing at
their distress.
* First person writes another test, vainly trying to get the right code out of
his idiotic pair, who just can't write
the right code.
* Second person laughs hysterically and writes something different than the test
writer wanted. He cackles gleefully.
and so it repeats.
This creates a tension between test writer and code writer that results in much
better, more simple code.
That tension is missing without a pair, and it takes a tremendous amount of
self-awareness and discipline to get to the
same level of coding goodness without it.
Has anyone else felt this? Is this so blatantly obvious that I've bored you all
to tears?
I'm planning on turning this into a blog post RSN, with a bit more detail and
description.
bab
--
Brian Button bbutton@...
VP Engineering http://www.agilestl.com
Asynchrony Solutions http://oneagilecoder.agilestl.com
St. Louis, MO 636.399.3146
Extreme Programming in St Louis - http://groups.yahoo.com/group/xpstl
On Nov 7, 2007 7:28 PM, Cory Foy <usergroup@...> wrote:
>
> I've been pondering in my head a way to use LINQ to do some interesting
> things. I've also been trying RSpec on IronRuby and hope to have a
> little more time to see if I can get that running.
Hey Cory.
Does IronRuby work like JRuby where you can into .Net and .Net can
call into Ruby? Does that allow you to script and test your .Net
classes with a tool like RSpec?
LINQ sounds interesting. In Rails, the ActiveRecord ORM layer hides a
lot of pure SQL, so you can do a lot of queries in Ruby. but it
doesn't go as far as LINQ. For instance, you can use an instance range
class in place of the 'between' clause. E.g. :conditions => {
:updated_at => start_time..end_time }
BTW, the project we are working on in our St. Louis Ruby Meetings is
driven by RSpec. If anyone is interested in learning more about RSpec
and BDD, come out to our meeting this coming Monday.
Info at www.stlruby.org
Ed
--
Ed Howland
http://greenprogrammer.blogspot.com
Ed Howland wrote:
> Along those same lines, RSpec has merged in rbehave like functionality
> in its trunk. This gives rise to the new Story Runner which is like
> adding integration testing to RSpec while keeping it simple enough for
> customers, BAs and QAs to author.
>
> Is there any push to make NUnit see any of the BDD or IT-type functionality?
Right now we're at ground zero. We are hashing out licensing, and the
plugin model and some other things. I'll pass it along to see how far we
can push it.
I've been pondering in my head a way to use LINQ to do some interesting
things. I've also been trying RSpec on IronRuby and hope to have a
little more time to see if I can get that running.
--
Cory Foy
http://www.cornetdesign.com
Quoting Jody Breshears <jody.breshears@...>:
> How about half a smiley, since I am 40, and no longer so young. ;)
> In fact, I don't think I can claim enlightenment, either.
> If fact, I was feeling a bit sloggish this morning....
It's all downhill from there ...
GB.
How about half a smiley, since I am 40, and no longer so young. ;) In fact, I don't think I can claim enlightenment, either. If fact, I was feeling a bit sloggish this morning....
> I don't think so. I am pretty sure NUnit makes a reflective call under the
> hood to
> System.Reflection.CurrentDev.IsOldUnenlightenedSlog;
> If it comes back true, the new syntax is disabled.
Don't I get a smiley with that insult?!?
That would be ...
System.Reflection.CurrentDev.IsFatOldStupidUnenlightenedSlogSir;
to you, young whippersnapper, Jody!
8^)
GB.
>
> On 11/6/07, Gary Brown <glbrown@...> wrote:
>>
>> Quoting Cory Foy <usergroup@...<usergroup%40cornetdesign.com>
>> >:
>>
>> > Craig Buchek wrote:
>> >> While NUnit is more verbose, the new syntax reads just about as nicely
>> >> as the RSpec syntax, and expresses the intent of the tests just as
>> >> well. The original NUnit syntax and Ruby Test::Unit don't do a good
>> >> job of distinguishing between the expected and actual arguments. And
>> >> you can add your own custom constraints/matchers in both NUnit and
>> RSpec.
>> >
>> > Also - if anyone has suggestions of things they'd like to see in the
>> > next version of NUnit, we've got a working group together talking about
>> > it, and I'd be happy to pass along any feedback.
>>
>> Does the classic stuff still work for us unenlightened slogs?!? 8^)
>>
>> GB.
>>
>>
>>
>
>
>
> --
> Jody Breshears
>
> Christopher Marlowe - "Money can't buy love, but it improves your bargaining
> position."
>
-- Jody Breshears
Christopher Marlowe - "Money can't buy love, but it improves your bargaining position."
Hi, Jody,
Quoting Jody Breshears <jody.breshears@...>:
> I don't think so. I am pretty sure NUnit makes a reflective call under the
> hood to
> System.Reflection.CurrentDev.IsOldUnenlightenedSlog;
> If it comes back true, the new syntax is disabled.
Don't I get a smiley with that insult?!?
That would be ...
System.Reflection.CurrentDev.IsFatOldStupidUnenlightenedSlogSir;
to you, young whippersnapper, Jody!
8^)
GB.
>
> On 11/6/07, Gary Brown <glbrown@...> wrote:
>>
>> Quoting Cory Foy <usergroup@...<usergroup%40cornetdesign.com>
>> >:
>>
>> > Craig Buchek wrote:
>> >> While NUnit is more verbose, the new syntax reads just about as nicely
>> >> as the RSpec syntax, and expresses the intent of the tests just as
>> >> well. The original NUnit syntax and Ruby Test::Unit don't do a good
>> >> job of distinguishing between the expected and actual arguments. And
>> >> you can add your own custom constraints/matchers in both NUnit and
>> RSpec.
>> >
>> > Also - if anyone has suggestions of things they'd like to see in the
>> > next version of NUnit, we've got a working group together talking about
>> > it, and I'd be happy to pass along any feedback.
>>
>> Does the classic stuff still work for us unenlightened slogs?!? 8^)
>>
>> GB.
>>
>>
>>
>
>
>
> --
> Jody Breshears
>
> Christopher Marlowe - "Money can't buy love, but it improves your bargaining
> position."
>
>> Does the classic stuff still work for us unenlightened slogs?!? ]
The NUnit documentation shows that they still support the "Classic
Model" assertions, as well as the "Constraint Model":
http://www.nunit.org/index.php/docs/index.php?p=assertions&r=2.4.3
It says that the classic versions are now implemented on top of the
constraint versions.
Craig
Yep, no fancy tricks.
As others have pointed out there are far more test
frameworks out there than one would at first think...
Later,
Bryan
--- Craig Buchek <yahoo@...> wrote:
...
> So basically, you just write your own stand-alone
> test functions, and
> call them all from the master function? That's what
> I've been doing to
> try adding tests to some existing PHP code.
> No fancy tricks or tips?
I don't think so. I am pretty sure NUnit makes a reflective call under the hood to System.Reflection.CurrentDev.IsOldUnenlightenedSlog; If it comes back true, the new syntax is disabled.
> Craig Buchek wrote:
>> While NUnit is more verbose, the new syntax reads just about as nicely
>> as the RSpec syntax, and expresses the intent of the tests just as
>> well. The original NUnit syntax and Ruby Test::Unit don't do a good
>> job of distinguishing between the expected and actual arguments. And
>> you can add your own custom constraints/matchers in both NUnit and RSpec.
>
> Also - if anyone has suggestions of things they'd like to see in the
> next version of NUnit, we've got a working group together talking about
> it, and I'd be happy to pass along any feedback.
Does the classic stuff still work for us unenlightened slogs?!? 8^)
GB.
-- Jody Breshears
Christopher Marlowe - "Money can't buy love, but it improves your bargaining position."
> Craig Buchek wrote:
> > While NUnit is more verbose, the new syntax reads just about as nicely
> > as the RSpec syntax, and expresses the intent of the tests just as
> > well. The original NUnit syntax and Ruby Test::Unit don't do a good
> > job of distinguishing between the expected and actual arguments. And
> > you can add your own custom constraints/matchers in both NUnit and RSpec.
>
> Also - if anyone has suggestions of things they'd like to see in the
> next version of NUnit, we've got a working group together talking about
> it, and I'd be happy to pass along any feedback.
Along those same lines, RSpec has merged in rbehave like functionality
in its trunk. This gives rise to the new Story Runner which is like
adding integration testing to RSpec while keeping it simple enough for
customers, BAs and QAs to author.
Is there any push to make NUnit see any of the BDD or IT-type functionality?
Ed
>
--
Ed Howland
http://greenprogrammer.blogspot.com