MbUnit really does nothing special with any of your code including static 
classes.

You might want to check how you implemented that Singleton.  Perhaps the shared 
connection is being closed somewhere. 
-----Original Message-----
From: Tomas Florian <[EMAIL PROTECTED]>
Date: Friday, Nov 21, 2008 7:31 pm
Subject: MbUnit Re: Weird database connection failure
To: [EMAIL PROTECTED]: [email protected]


Sorry about that, the code should say:

Controller.Initialize("DSN=SentenceDB");  

Now the good news, I found an interesting workaround when you mentioned the 
static initializer.  I took out all the "static" keywords from my controller 
class and instantiated it inside the Test the plain old way: Controller c = new 
Controller();  

It works fine now!

What I'm wondering now is why can't I use "static" classes like I tried.  I've 
been doing it for ages without any problem - it's basically a singleton 
pattern.  In this example, I used it because I know my application will never 
ever need to instantiate more than one Controller class.

Attaching the debugger was a good idea too.  Here are more details regarding 
the behavior:
- When I run with debugger attached to Mbunit gui there is no exception thrown
- When I run without debugger the exception is thrown the first time after the 
assembly reloads in mbUnit (second time run is ok, it keeps working fine until 
I press Assemblies->Reload)

I should probably repost this on the developer forum instead.  It looks like 
there is something different about the way mbUnit deals with static classes.

Thank you for your help. 






[EMAIL PROTECTED] wrote:
 The test is calling Controller.Initialize with no args but the code you 
included only has a variant with 1 arg.

> I wonder if you have some kind of static initializer in there that might be 
> causing trouble. 

> Alternately, there might be some problem if there are other tests that affect 
> the same static variables but that might run in a different order sometimes...

> Certainly weird.  Have you tried running the test under the debugger?
 -----Original Message-----
 From: ixnaum <[EMAIL PROTECTED]>
 Date: Friday, Nov 21, 2008 4:16 pm
 Subject: MbUnit Weird database connection failure
 To: "MbUnit.User" <[email protected]>Reply-To: 
[email protected]

>
 Hello,

> I came across a really strange problem.  I have to say that I'm
 relatively new to mbUnit so maybe I'm missing something obvious - but I had to 
post this because I just don't get it.

> I can sucessfully connect to ODBC database outside of MbUnit, but the same 
> code fails (throws Mysql connect exception) when run inside
 MbUnit.  What's even more strange is that if I rerun the same test
 with no code change the second time, there is no exception thrown.
 And that's not where the strangeness ends.  If I comment "IList list = 
Controller.ColumnList;" the test will always succeed with no MySQL
 exception.  If you look at that piece of code, it does nothing related with 
the database.  It just returns an empty IList.  The exception
 trace even says that it's not that line of code that's throwing the
 exception, it's the line above.  That makes sense - but why in the
 heck does it work just fine when "IList list =" is commented out.
 Sorry if this post doesn't make sense ... the whole thing doesn't make sense.

> I should add that I had something similar happen to the same code when I used 
> NUnit on it.  I changed to MbUnit partly because I thought
 NUnit was messed up.  Actually NUnit made a bit more sense, in NUnit, the 
MySQL exception was thrown every single time during
 Controller.Initialize() ... none of this: it-works-on-a-second-try-if- 
you-click-run-again

> Here is my test code:
         [Test]
         public void Test()
         {

>             Controller.Initialize();
             IList list = Controller.ColumnList;

>             //I know I don't have any assert code here, but I tried to keep 
> the test to a minimum since it's behaving strange

>         }

>
 Controller code:

>     public class Controller
     {
         private static List<string> groupTaggedColumns = new
 List<string>();
         private static OdbcConnection connection;

>         public static IList ColumnList
         {
             get
             {
                 return groupTaggedColumns;
             }
         }

>         public static void Initialize(string DSNstring)
         {
              connection = new OdbcConnection(DSNstring);
             connection.Open();
         }
 }

>
 Exception
 (BTW I'm not even connecting to localhost, my DSN is setup to connect to 
another host - again works fine with that line commented out):

>
 Message: ERROR [HY000] [MySQL][ODBC 5.1 Driver]Can't connect to MySQL server 
on 'localhost' (10061)
 ERROR [HY000] [MySQL][ODBC 5.1 Driver]Can't connect to MySQL server on
 'localhost' (10061)

> Type: System.Data.Odbc.OdbcException
 Source:
 Errors: System.Data.Odbc.OdbcErrorCollection
 ErrorCode: -2146232009
 TargetSite: Void HandleError(System.Data.Odbc.OdbcHandle, RetCode)
 HelpLink: null
 Stack:   at System.Data.Odbc.OdbcConnection.HandleError(OdbcHandle
 hrHandle, RetCode retcode)
    at System.Data.Odbc.OdbcConnectionHandle..ctor(OdbcConnection
 connection, OdbcConnectionString constr, OdbcEnvironmentHandle
 environmentHandle)
    at System.Data.Odbc.OdbcConnectionFactory.CreateConnection
 (DbConnectionOptions options, Object poolGroupProviderInfo,
 DbConnectionPool pool, DbConnection owningObject)
    at
 System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection
 (DbConnection owningConnection, DbConnectionPoolGroup poolGroup)
    at System.Data.ProviderBase.DbConnectionFactory.GetConnection
 (DbConnection owningConnection)
    at System.Data.ProviderBase.DbConnectionClosed.OpenConnection
 (DbConnection outerConnection, DbConnectionFactory connectionFactory)
    at System.Data.Odbc.OdbcConnection.Open()
    at StretchBase.Core.Controller.Initialize(String DSNstring) in
 xxxxxxxxxxxxxx
    at StretchBase.MbUnit.ColumnListTests.Test() in xxxxxxxxxxxx

>
 Please help - I'm out of ideas.
 Thank you!

>

>
 >

>   






--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"MbUnit.User" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/MbUnitUser?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to