|
From: Joselito D. M. <joe...@gm...> - 2006-11-07 16:27:10
|
Hello,
This is just an FYI. An earlier version of Rhino Mock (version 2.9.2)
had the same issue. I reported this to the creator of Rhino Mock and
he had a similar knee-jerk response at first. However, a few days
after I reported it, he came out with a newer version (version 2.9.5
released November 5) that fixed this issue.
I guess this means I'm better off with Rhino Mocks now.
Joen Moreno
On 11/3/06, Joselito D. Moreno <joe...@gm...> wrote:
> The reason for catching "Exception" is not relevant to the issue I
> brought forward. As I have said, I agree that this is usually bad
> practice to do so. However, even accepted "best practice" techniques
> have exceptions and I believe that in my case, this is one of those
> exceptions. Bad practice or not, NMock2 should have been able to tell
> me that there was a failure with the code under test, IMHO. If the
> NMock2 development team disagrees, I guess I just have to live with
> it.
>
> Thank you,
>
> Joen
>
>
> On 11/3/06, Nat Pryce <nat...@gm...> wrote:
> > Why are you catching Exception? There should be no reason to catch
> > the root exception type. Application code should catch
> > ApplicationException and/or SystemException, but not Exception.
> >
> > --Nat
> >
> > On 11/4/06, Joselito D. Moreno <joe...@gm...> wrote:
> > > I am aware of that as a bad practice. However, like all other
> > > generalizations, there are exceptions. My real code is one of those.
> > > I am not talking about the code I sent in my previous email. It was
> > > just a simple example to show how to reproduce the bug.
> > >
> > > IMHO, this is a bug because this causes a false positive that is
> > > difficult to detect (I was able to detect it by accident). This should
> > > be at least mentioned as a gotcha list or somewhere in the
> > > documentation. Of course, this is just my personal opinion.
> > >
> > > Thank you for responding.
> > >
> > > Joen Moreno
> > >
> > > On 11/3/06, Nat Pryce <nat...@gm...> wrote:
> > > > Catching a root exception and ignoring it is a bad practice. Think of
> > > > this as nMock highlighting design issues that need to be addressed.
> > > >
> > > > --Nat.
> > > >
> > > > On 11/3/06, Joselito D. Moreno <joe...@gm...> wrote:
> > > > > Hello,
> > > > >
> > > > > I am not sure whether to report this as a bug or just a gotcha.
> > > > >
> > > > > Here is the code to reproduce the issue I'm talking about.
> > > > >
> > > > > This is the class under test:
> > > > > public class ServiceDependentClass
> > > > > {
> > > > > IService service = null;
> > > > > public ServiceDependentClass(IService service)
> > > > > {
> > > > > this.service = service;
> > > > > }
> > > > >
> > > > > public int callService()
> > > > > {
> > > > > for (int i = 0; i < 3; i++ )
> > > > > {
> > > > > try
> > > > > {
> > > > > Console.WriteLine("Calling method [" + i + "]");
> > > > > int result = service.doSomething("someParameter");
> > > > > }
> > > > > catch (Exception)
> > > > > {
> > > > > }
> > > > > }
> > > > > return 0;
> > > > > }
> > > > > }
> > > > >
> > > > > This is the IService interface:
> > > > > public interface IService
> > > > > {
> > > > > int doSomething(string someParameter);
> > > > > }
> > > > >
> > > > > This is the NUnit test code:
> > > > > [TestFixture]
> > > > > public class NMock2BugTest
> > > > > {
> > > > > [Test]
> > > > > public void TestBug()
> > > > > {
> > > > > Mockery mocks = new Mockery();
> > > > > IService mockService = mocks.NewMock<IService>();
> > > > > ServiceDependentClass classUnderTest = new
> > > > > ServiceDependentClass(mockService);
> > > > >
> > > > > Expect.Once.On(mockService)
> > > > > .Method("doSomething")
> > > > > .With("someParameter")
> > > > > .Will(Return.Value(0));
> > > > >
> > > > > classUnderTest.callService();
> > > > > mocks.VerifyAllExpectationsHaveBeenMet();
> > > > > }
> > > > > }
> > > > >
> > > > > The problem with this is that I was expecting this test to fail
> > > > > because of the "Expect.Once" call and the class under test actually
> > > > > calls the service.doSomething("someParameter") 3 times. Instead, the
> > > > > test actually passes when using NUnit because the try-catch(Exception)
> > > > > of the class under test that surrounds the service.doSomething() call
> > > > > consumes the "NMock2.Internal.ExpectationException: unexpected
> > > > > invocation of service.doSomething("someParameter")".
> > > > >
> > > > > Is this truly a bug or is this just something that users need to be aware of?
> > > > >
> > > > > Thank you,
> > > > >
> > > > > Joen Moreno
> > > > >
> > > > > -------------------------------------------------------------------------
> > > > > Using Tomcat but need to do more? Need to support web services, security?
> > > > > Get stuff done quickly with pre-integrated technology to make your job easier
> > > > > Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
> > > > > http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
> > > > > _______________________________________________
> > > > > NMock-two-dev mailing list
> > > > > NMo...@li...
> > > > > https://lists.sourceforge.net/lists/listinfo/nmock-two-dev
> > > > >
> > > >
> > > > -------------------------------------------------------------------------
> > > > Using Tomcat but need to do more? Need to support web services, security?
> > > > Get stuff done quickly with pre-integrated technology to make your job easier
> > > > Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
> > > > http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
> > > > _______________________________________________
> > > > NMock-two-dev mailing list
> > > > NMo...@li...
> > > > https://lists.sourceforge.net/lists/listinfo/nmock-two-dev
> > > >
> > >
> > > -------------------------------------------------------------------------
> > > Using Tomcat but need to do more? Need to support web services, security?
> > > Get stuff done quickly with pre-integrated technology to make your job easier
> > > Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
> > > http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
> > > _______________________________________________
> > > NMock-two-dev mailing list
> > > NMo...@li...
> > > https://lists.sourceforge.net/lists/listinfo/nmock-two-dev
> > >
> >
> > -------------------------------------------------------------------------
> > Using Tomcat but need to do more? Need to support web services, security?
> > Get stuff done quickly with pre-integrated technology to make your job easier
> > Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
> > http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
> > _______________________________________________
> > NMock-two-dev mailing list
> > NMo...@li...
> > https://lists.sourceforge.net/lists/listinfo/nmock-two-dev
> >
>
|