wow !!!
i am so happy - you helped me find a major bug (or bug potential....)

i am actually testing AOP capabilities (using the great PostSharp)
and i was holding the instance of the log inside my custom attribute
class.
this what caused all the problems!!!

thanks a lot for both of you and i wish you the best weekend of your
life...
Tom

On Nov 12, 5:29 pm, Tim Barcz <[email protected]> wrote:
> I would not....you're never disposing it.
>
> What I would do (in order) if one is not available as an option go to the
> next)
>
>    - Get rid of statics, inject in "logProvider" instance using Windsor or
>    StructureMap with a static lifestyle, more testable with same fundamental
>    idea of one object serving everyone
>    - Create a public static method on LogProvider named ClearState() which
>    resets the shared state back to whatever it needs to be.  This method would
>    only be there for testing purposes
>    - If creating a public is a problem, then create an interanl method and
>    make internals visible to your test assembly so that you can call it from
>    your test to reset any stored state
>
> That help?
>
>
>
> On Thu, Nov 12, 2009 at 9:24 AM, tom308 <[email protected]> wrote:
>
> > Hey Alex!
> > thanks for the answer, but LogProvider is indeed a singleton\static
> > class...
> > should i implement a IDisposable for it - just for testing?
>
> > On Nov 12, 5:17 pm, Alex McMahon <[email protected]> wrote:
> > > I think Tim is suggesting something within your code is where there is a
> > > state problem. So the answer to "what can I do to prevent this" is to
> > look
> > > through the classes you're testing and make sure that multiple instances
> > of
> > > the class are truly independent from each other. i.e. there are no
> > statics
> > > or singletons that will be shared among multiple instances. LogProvider
> > does
> > > look like a sensible place to start
>
> > > 2009/11/12 tom308 <[email protected]>
>
> > > > you are right, something is the mocked instance...
>
> > > > but what can i do to prevent this ?
>
> > > > On Nov 12, 4:35 pm, Tim Barcz <[email protected]> wrote:
> > > > > Without seeing LogProvider, LogMethod1, LogMethod2, LogMethod3 I am
> > > > guessing
> > > > > you have saved state problems which is probably coming from use of
> > > > > LogProvider (static class).
>
> > > > > *something* is getting saved from execution to execution.
>
> > > > > Tim
>
> > > > > On Thu, Nov 12, 2009 at 8:30 AM, tom308 <[email protected]> wrote:
>
> > > > > > sorry - always the first one is successful and all other are
> > > > > > failing....
>
> > > > > > On Nov 12, 4:29 pm, tom308 <[email protected]> wrote:
> > > > > > > let me just point that running order didn't change anything
> > (always
> > > > > > > the first one is failing)
> > > > > > > also i tried to call log.BackToRecord(); at the end of each test
> > > > > > > method - and :-( it didn't help...
>
> > > > > > > can anyone see the problem ?
>
> > > > > > > On Nov 12, 9:36 am, tom308 <[email protected]> wrote:
>
> > > > > > > > Hey Tim,
> > > > > > > > of course i can:
>
> > > > > > > >  [TestCleanup()]
> > > > > > > >          public void MyTestCleanup()
> > > > > > > >          {
> > > > > > > >              LogManager.Shutdown();
> > > > > > > >          }
>
> > > > > > > >         #endregion
>
> > > > > > > >          [TestMethod]
> > > > > > > >          public void TestBasicLogMethod()
> > > > > > > >          {
> > > > > > > >              using (Logger log =
> > > > MockRepository.GenerateMock<Logger>
> > > > > > > > (null, null))
> > > > > > > >              {
> > > > > > > >                  LogProvider.c_logger = log;
> > > > > > > >                  log.Expect(l =>
> > l.WriteToLog(LogSeverity.Debug,
> > > > > > > > "LogTest.AOPTests", "LogMethod", "OnEntry"));
> > > > > > > >                  log.Expect(l =>
> > l.WriteToLog(LogSeverity.Debug,
> > > > > > > > "LogTest.AOPTests", "LogMethod", "OnExit"));
>
> > > > > > > >                  LogMethod();
> > > > > > > >                  log.VerifyAllExpectations();
> > > > > > > >              }
> > > > > > > >          }
>
> > > > > > > >          [TestMethod]
> > > > > > > >          public void TestLogMethodForCategory()
> > > > > > > >          {
> > > > > > > >              using (Logger log =
> > > > MockRepository.GenerateMock<Logger>
> > > > > > > > (null, null))
> > > > > > > >              {
> > > > > > > >                  LogProvider.c_logger = log;
>
> > > > > > > >                  log.Expect(l =>
> > l.WriteToLog(LogSeverity.Debug,
> > > > > > > > LogCategories.LogFile | LogCategories.EventLog,
> > "LogTest.AOPTests",
> > > > > > > > "LogMethod2", "OnEntry"));
> > > > > > > >                  log.Expect(l =>
> > l.WriteToLog(LogSeverity.Debug,
> > > > > > > > LogCategories.LogFile | LogCategories.EventLog,
> > "LogTest.AOPTests",
> > > > > > > > "LogMethod2", "OnExit"));
>
> > > > > > > >                  LogMethod2();
>
> > > > > > > >                  log.VerifyAllExpectations();
> > > > > > > >              }
> > > > > > > >          }
>
> > > > > > > >          [TestMethod]
> > > > > > > >          public void TestLogMethodForSeverity()
> > > > > > > >          {
> > > > > > > >              using (Logger log =
> > > > MockRepository.GenerateMock<Logger>
> > > > > > > > (null, null))
> > > > > > > >              {
> > > > > > > >                  LogProvider.c_logger = log;
> > > > > > > >                  log.Expect(l =>
> > l.WriteToLog(LogSeverity.Warning,
> > > > > > > > "LogTest.AOPTests", "LogMethod3", "OnEntry"));
> > > > > > > >                  log.Expect(l =>
> > l.WriteToLog(LogSeverity.Warning,
> > > > > > > > "LogTest.AOPTests", "LogMethod3", "OnExit"));
>
> > > > > > > >                  LogMethod3();
>
> > > > > > > >                  log.VerifyAllExpectations();
> > > > > > > >              }
> > > > > > > >          }
>
> > > > > > > > On Nov 12, 4:43 am, Tim Barcz <[email protected]> wrote:
>
> > > > > > > > > Can you post all of the code here?
>
> > > > > > > > > On Wed, Nov 11, 2009 at 8:57 AM, tom308 <[email protected]
>
> > > > wrote:
>
> > > > > > > > > > Hi all!
> > > > > > > > > > i am new to TDD & Mocks (but very enthusiastic about it).
> > > > > > > > > > i am using MSTest & Rhino mock 3.5.
> > > > > > > > > > testing are OK when running each one separately, but when
> > > > running
> > > > > > > > > > entire TestSet, the first one is OK but all other are
> > failing.
> > > > > > > > > > My hunch is that i am holding the mocked object between
> > tests,
> > > > and
> > > > > > > > > > causing the problem (i saw that it is same object).
> > > > > > > > > > i also tried to use a repository instance insted of the
> > static
> > > > one,
> > > > > > > > > > but it didn't help.
> > > > > > > > > > can someone help ?
>
> > > > > > > > > > my tests are all from the same template:
>
> > > > > > > > > >         [TestMethod]
> > > > > > > > > >        public void TestBasicLogMethod()
> > > > > > > > > >        {
> > > > > > > > > >            using (Logger log =
> > > > MockRepository.GenerateMock<Logger>
> > > > > > > > > > (null, null))
> > > > > > > > > >            {
> > > > > > > > > >                //set the instance into the logProvider
> > private
> > > > > > static
> > > > > > > > > > logger
> > > > > > > > > >                LogProvider.c_logger = log;
>
> > > > > > > > > >                log.Expect(l =>
> > l.WriteToLog(LogSeverity.Debug,
> > > > > > > > > > "LogTest.AOPTests", "LogMethod", "OnEntry"));
> > > > > > > > > >                log.Expect(l =>
> > l.WriteToLog(LogSeverity.Debug,
> > > > > > > > > > "LogTest.AOPTests", "LogMethod", "OnExit"));
>
> > > > > > > > > >                LogMethod();
> > > > > > > > > >                log.VerifyAllExpectations();
> > > > > > > > > >            }
> > > > > > > > > >        }
>
> > > > > > > > > --
> > > > > > > > > Tim Barcz
> > > > > > > > > Microsoft C# MVP
> > > > > > > > > Microsoft ASPInsiderhttp://timbarcz.devlicio.ushttp://
> > > > > >www.twitter.com/timbarcz
>
> > > > > --
> > > > > Tim Barcz
> > > > > Microsoft C# MVP
> > > > > Microsoft ASPInsiderhttp://timbarcz.devlicio.ushttp://
> > > >www.twitter.com/timbarcz
>
> --
> Tim Barcz
> Microsoft C# MVP
> Microsoft ASPInsiderhttp://timbarcz.devlicio.ushttp://www.twitter.com/timbarcz
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Rhino.Mocks" 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/rhinomocks?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to