Re: Testing a Singleton with NUnit
"Christian Jordan" <[email protected]> Wed, 30 Jul 2008 10:22:35 +0200
| Newsgroups | gmane.comp.windows.dotnet.nunit.user |
|---|---|
| Message-ID | <[email protected]> |
Hi Charlie,
the "problem" is already solved. It was very amusing for me (and probably for you, too :-))) to locate the error. For details have a look at my discussion with Seyit!
Greetings
Christian
-----Ursprüngliche Nachricht-----
Von: Christian Jordan
Gesendet: Mittwoch, 30. Juli 2008 09:29
An: 'Seyit Caglar Abbasoglu'
Betreff: AW: [Nunit-users] Testing a Singleton with NUnit
Hi Seyit,
thx a lot for your answer. Because there are three lines of code in the getIntance() method, I was very confident about the correctness of the code. In fact, the getIntance()-method now looks like this:
Public Shared Function getInstance() As SBHelper
If SBHelper._Instance Is Nothing Then
_Instance = New SBHelper()
End If
Return _Instance
End Function
If you replace "SBHelper._Instance" with "SBHelper.getInstance" you would obviously get a dead infinite loop :-)) and this was exactly the situation that caused the OverflowException.
I if would have tried to debug the application itself before trying to modifiy the test, I would found the bug on the spot, but maybe it was a good "feature" that I failed on this. Because now I joined this mailing list and this gives me (and probably you in the future) further possibilities ;-)
Greetings
Christian
________________________________________
Von: Seyit Caglar Abbasoglu
Gesendet: Mittwoch, 30. Juli 2008 03:47
An: Christian Jordan
Betreff: Re: [Nunit-users] Testing a Singleton with NUnit
Hi Christian,
StackOverflowException generally means there is an infinite loop in the execution. Have you tried to debug it?
-----Ursprüngliche Nachricht-----
Von: Charlie Poole [mailto:[email protected]]
Gesendet: Dienstag, 29. Juli 2008 20:34
An: Christian Jordan; [email protected]
Betreff: RE: [Nunit-users] Testing a Singleton with NUnit
Hi Christian,
Well, you picked the right list, which puts you ahead of
many people. :-)
What does the implementation of getInstance() look like?
Charlie
> -----Original Message-----
> From: [email protected]
> [mailto:[email protected]] On Behalf
> Of Christian Jordan
> Sent: Tuesday, July 29, 2008 11:29 AM
> To: [email protected]
> Subject: [Nunit-users] Testing a Singleton with NUnit
>
> Hello everybody,
>
> this is the first time I use this mailing list and I
> apologise for any inconvenience if I overlooked an archived
> Mailing-Entry that matches my problem :-))
>
> The situation:
>
> I'm using NUnit 2.4.8 .NET 2.0 with Visual Basic 2005.
> I want to test a method which is located in a Class that
> implements the Singleton-Pattern. The test class looks like this:
>
> Imports NUnit.Framework
> Imports --Namespace were Singleton-Class is located--
>
> <TestFixture()> Public Class TestSBHelfer
>
> Private helper As SBHelper 'Singleton
>
> ''' <summary>
> ''' Init.
> ''' </summary>
> <TestFixtureSetUp()> Public Sub Init()
>
> helper = SBHelper.getInstance()
>
> End Sub
>
> ''' <summary>
> ''' Testing Method doSomething()
> ''' </summary>
> <Test()> Public Sub singletonTest()
>
> helfer.doSomething()
> Assert.IsTrue(...)
>
> End Sub
>
> End Class
>
> The problem:
>
> When I run this test, NUnit crashes (while 'getInstance()' is
> executed) and throws a StackOverflowException (so the test
> itself is not completed because NUnit itself has crashed).
> When I implement SBHelper as a 'normal' class then everything
> works fine, so it has to do something with the Singleton.
>
> Greetings from Hamburg
> Christian
>
Sitz der Gesellschaft: Hamburg; Amtsgericht Hamburg HRA 104052
Persönlich haftende Gesellschafterin:
LichtBlick Verwaltungsgesellschaft mbH; Amtsgericht Hamburg HRB 97446
Geschäftsführer: Wilfried Gillrath, Heiko von Tschischwitz
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/