Re: Unit Testing in .Net

  • From: Jacques Bosch <jfbosch@xxxxxxxxx>
  • To: programmingblind@xxxxxxxxxxxxx
  • Date: Tue, 15 Feb 2011 15:07:10 +0200

Sit back, and wait for the approaching information overload! :)


On Tue, Feb 15, 2011 at 3:01 PM, RicksPlace <ofbgmail@xxxxxxxxx> wrote:

>  Hi Guys: What is this Unit Testing all about? The way I always worked was
> to develop a project in a modular fashon. I plan, design and then code and
> test one module at a time so I know my modules are working before going on
> to the next module. How is this diferent from Unit Testing? I see a bunch of
> software out there for Unit Testing and it all sounds complicated but
> perhaps I don't really understand, actually I really don't understand, what
> it is all about.
> Later and thanks:
> Rick USA
>
> ----- Original Message -----
> *From:* Jacques Bosch <jfbosch@xxxxxxxxx>
> *To:* programmingblind@xxxxxxxxxxxxx
> *Sent:* Tuesday, February 15, 2011 6:51 AM
> *Subject:* Re: Unit Testing in .Net
>
> >measure twice, cut once.
> And not the fingers either!
>
>
> On Tue, Feb 15, 2011 at 1:43 PM, Kerneels Roos <kerneels@xxxxxxxxx> wrote:
>
>> Wise words from a wise man!
>>
>>
>> On 2/15/2011 1:33 PM, Homme, James wrote:
>>
>>> Hi Kerneels,
>>> I had a Wood Shop teacher who told me measure twice, cut once.
>>>
>>> Jim
>>>
>>> Jim Homme,
>>> Usability Services,
>>> Phone: 412-544-1810. Skype: jim.homme
>>> Internal recipients,  Read my accessibility blog. Discuss accessibility
>>> here. Accessibility Wiki: Breaking news and accessibility advice
>>>
>>> -----Original Message-----
>>> From: programmingblind-bounce@xxxxxxxxxxxxx [mailto:
>>> programmingblind-bounce@xxxxxxxxxxxxx] On Behalf Of Kerneels Roos
>>> Sent: Tuesday, February 15, 2011 2:27 AM
>>> To: programmingblind@xxxxxxxxxxxxx
>>> Subject: Re: Unit Testing in .Net
>>>
>>> Hi Dave,
>>>
>>> The more I read about it and try it for myself the more I can see the
>>> value of unit testing. it looks however like something you need to do
>>> from day one of the coding of a project. It's very hard to come in
>>> afterwards and add tests to code that is suspect. I'm very impressed
>>> with NUnit, but the GUI runner I don't find very accessible
>>> unfortunately. Most frameworks seem to have a command line runner also,
>>> so one can do that.
>>>
>>> Apart from the May 2009 book "The Art of Unit Testing ", there's also a
>>> seemingly seminal book on TDD from 2002 focussing on Java -- can't find
>>> the details now unfortunately, the author is Ken Peck.
>>>
>>> What I do realise is that , for years now I've been coding and then
>>> testing while TDD is the other way around. The code then test approach
>>> is more of a cowboy coder / hacker style which sutes the creative, risk
>>> taking right brainers :-). To shift to the test then code approach might
>>> take some time and effort.
>>>
>>> Now that I think about it, TDD makes a lot of sense for VI or blind
>>> folks. If used properly it can minimise the need for debuggers. Don't
>>> know about you guys, but I don't particularly like using a debugger.
>>>
>>> Forgive the rambling.
>>>
>>> Kerneels
>>>
>>> On 2/14/2011 6:00 AM, Dave wrote:
>>>
>>>> With that said, lots of people don't follow TDD or some variant
>>>> because it does take a lot more time.  You also have to consider that
>>>> test code usually piles up *very* quickly.  You could have a few
>>>> hundred lines of code and to thoroughly test it (i.e. if you used TDD,
>>>> or if you measure code coverage), you'll need triple that in test code
>>>> or more.  Once you make any changes in the production code, you end up
>>>> spending lots of time making changes to the pile of test code.
>>>>
>>>> Not to say that you shouldn't test thoroughly, but lots don't
>>>> (especially to the degree they should) for some valid reasons.  If you
>>>> can pull it off, it certainly will give your users less headaches when
>>>> trying to use your products.  It's one of those "open ended" problems;
>>>> there's reasonable points to stop writing tests, but never a "end" as
>>>> there's always some other condition you could try for an sufficiently
>>>> complex piece of software.
>>>>
>>>> You also don't want to go down the road of testing user interface
>>>> components as it requires hooking deeply into OS level events (most
>>>> ironically, accessibility is useful here).
>>>>
>>>>
>>>> On 2/13/11, Kerneels Roos<kerneels@xxxxxxxxx>   wrote:
>>>>
>>>>> Thanks Dave,
>>>>>
>>>>> It is not so nice to come in afterwards and write tests for classes,
>>>>> which I'm doing now to ensure everything works right, but I can imagine
>>>>> a TDD approach could work very well indeed. As I understand it, TDD is
>>>>> also core to XP (extreme programming).
>>>>>
>>>>> For  anything new I'm going to write tests before coding and also look
>>>>> into TDD more formally. Once you know how to code and design algorithms
>>>>> one should invest in some solid software engineering techniques and get
>>>>> a good methodology to follow. I strongly believe it will save tons of
>>>>> time and produce far better software if the project is anything larger
>>>>> than a simple CRUD system.
>>>>>
>>>>> I can't decide if the book "The Art of Unit Testing" is worth the $24
>>>>> or
>>>>> not though :-)
>>>>>
>>>>> Regards
>>>>>
>>>>> On 2/13/2011 8:55 AM, Dave wrote:
>>>>>
>>>>>> The general approach advocated by some is that of Test Driven
>>>>>> Development.
>>>>>>
>>>>>> I have to say that whatever I've written using this approach has been
>>>>>> far more robust when it comes to quality.
>>>>>>
>>>>>> The .Net unit test frameworks of which NUnit is only one, all have
>>>>>> lots in common.  Visual Studio comes with a unit test framework as
>>>>>> well and integrates the running of tests within VS itself.  The actual
>>>>>> tool chosen is a personal choice -- if you like integration with VS
>>>>>> for example or something independent.  What tool's UI do you like,
>>>>>> etc.
>>>>>>
>>>>>> Basically, they all use .Net attributes to "markup" methods and
>>>>>> classes with metadata; think test name, test description, run time,
>>>>>> category, etc.  Then, at runtime, the runner just via reflection grabs
>>>>>> all of the tests and invokes them programmatically.
>>>>>>
>>>>>> As for TDD, if you're not familiar with it, I'd recommend looking it
>>>>>> up.  Essentially, you write tests before actually even implementing
>>>>>> anything.  The tests serve as a statement of what you expect to be
>>>>>> true.  This obviously requires that you iron out what your class
>>>>>> interface should look like; this might not be the style you're used to
>>>>>> and something C++ developers are more acustomed to.
>>>>>>
>>>>>> However, as you go along, you already have a set of validation tests
>>>>>> that verify that your stuff actually works without doing the tedious
>>>>>> pattern of compile, run, manually check if it works, and rinse/repeat.
>>>>>>
>>>>>> On 2/11/11, Jacques Bosch<jfbosch@xxxxxxxxx>    wrote:
>>>>>>
>>>>>>> I've had good success with NUnit.
>>>>>>>
>>>>>>> On Fri, Feb 11, 2011 at 10:25 AM, Kerneels Roos<kerneels@xxxxxxxxx>
>>>>>>> wrote:
>>>>>>>
>>>>>>> Hi, I've investigated NUnit and it'the GUI is quite accessible with
>>>>>>>> JFW.
>>>>>>>> Also interested in MBUnit / Galeo but haven't tested the GUI yet.
>>>>>>>> Unit
>>>>>>>> testing seems like a brilliant way to develop better code and keep
>>>>>>>> it
>>>>>>>> working while changing things.
>>>>>>>>
>>>>>>>> Advantage of NUnit is that the syntax is XUnit compatible, so what
>>>>>>>> you
>>>>>>>> learn there directly applies to a host of other unit test frameworks
>>>>>>>> and
>>>>>>>> languages. The more advanced Galeo / MBUnit is also XUnit compatible
>>>>>>>> should
>>>>>>>> you need more power later on.
>>>>>>>> Could anyone recommend a good book on this topic / some comments of
>>>>>>>> your
>>>>>>>> own experience? I hope unit testing isn't just an accademic ideal
>>>>>>>> but
>>>>>>>> actually something that can be done economically.
>>>>>>>>
>>>>>>>> I found this e-book (PDF, epub and mobiM):
>>>>>>>> http://www.manning.com/osherove/
>>>>>>>> but it's from 2009 and doesn't seem to cover Galeo.
>>>>>>>>
>>>>>>>> Any comments most welcome!
>>>>>>>>
>>>>>>>> Regards,
>>>>>>>> Kerneels
>>>>>>>>
>>>>>>>> --
>>>>>>>> Kerneels Roos
>>>>>>>> Cell: +27 (0)82 309 1998
>>>>>>>> Skype: cornelis.roos
>>>>>>>>
>>>>>>>> "There are only two kinds of programming languages in the world;
>>>>>>>> those
>>>>>>>> everyone complains about, and those nobody uses."
>>>>>>>>
>>>>>>>> __________
>>>>>>>> View the list's information and change your settings at
>>>>>>>> //www.freelists.org/list/programmingblind
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>
>>>>>>> Jacques Bosch
>>>>>>>
>>>>>>> Software Architecture and Development
>>>>>>> Independent Contractor
>>>>>>> Cell: +27 824711807 Fax: +27 86 504 4726
>>>>>>> E-Mail: jfbosch@xxxxxxxxx
>>>>>>>
>>>>>>> __________
>>>>>> View the list's information and change your settings at
>>>>>> //www.freelists.org/list/programmingblind
>>>>>>
>>>>>> --
>>>>> Kerneels Roos
>>>>> Cell: +27 (0)82 309 1998
>>>>> Skype: cornelis.roos
>>>>>
>>>>> "There are only two kinds of programming languages in the world; those
>>>>> everyone complains about, and those nobody uses."
>>>>>
>>>>> __________
>>>>> View the list's information and change your settings at
>>>>> //www.freelists.org/list/programmingblind
>>>>>
>>>>>
>>>>> __________
>>>> View the list's information and change your settings at
>>>> //www.freelists.org/list/programmingblind
>>>>
>>>> --
>>> Kerneels Roos
>>> Cell: +27 (0)82 309 1998
>>> Skype: cornelis.roos
>>>
>>> "There are only two kinds of programming languages in the world; those
>>> everyone complains about, and those nobody uses."
>>>
>>> __________
>>> View the list's information and change your settings at
>>> //www.freelists.org/list/programmingblind
>>>
>>>
>>> This e-mail and any attachments to it are confidential and are intended
>>> solely for use of the individual or entity to whom they are addressed.  If
>>> you have received this e-mail in error, please notify the sender immediately
>>> and then delete it.  If you are not the intended recipient, you must not
>>> keep, use, disclose, copy or distribute this e-mail without the author's
>>> prior permission.  The views expressed in this e-mail message do not
>>> necessarily represent the views of Highmark Inc., its subsidiaries, or
>>> affiliates.
>>> __________
>>> View the list's information and change your settings at
>>> //www.freelists.org/list/programmingblind
>>>
>>>
>> --
>>  Kerneels Roos
>> Cell: +27 (0)82 309 1998
>> Skype: cornelis.roos
>>
>> "There are only two kinds of programming languages in the world; those
>> everyone complains about, and those nobody uses."
>>
>> __________
>> View the list's information and change your settings at
>> //www.freelists.org/list/programmingblind
>>
>>
>
>
> --
>
> Jacques Bosch
>
> Software Architecture and Development
> Independent Contractor
> Cell: +27 824711807 Fax: +27 86 504 4726
> E-Mail: jfbosch@xxxxxxxxx
>
>


-- 

Jacques Bosch

Software Architecture and Development
Independent Contractor
Cell: +27 824711807 Fax: +27 86 504 4726
E-Mail: jfbosch@xxxxxxxxx

Other related posts: