|
From: Joselito D. M. <joe...@gm...> - 2006-11-04 01:52:45
|
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
>
|