← Back to team overview

nunit-core team mailing list archive

[Bug 958770] [NEW] Add Assert.Throws( Func<T> ) for properties

 

Public bug reported:

Sometimes an object is in a certain state that causes reading its
properties to throw exceptions. For example, the object might be
disposed, and will throw InvalidOperationException().

To test for such behavior, one would write

var obj = CreateDisposedObject();

#pragma warning disable 168
Assert.Throws<InvalidOperationException>(() => { var v = obj.Name; }); // Assuming Name cannot be accessed passed disposing
#pragma warning restore 168


This is clearly inconvinient and instead can be remedied with this overload (and similar for error message formatting)

        public static T Throws<T>(Func<object> code) where T : Exception
        {
            return Assert.Throws<T>(() => { var v = code(); });
        }

Having this overload would allow us to write:

var obj = CreateDisposedObject();
Assert.Throws<InvalidOperationException>(() => obj.Name);

Much more consise and does not require pragmas.

** Affects: nunitv2
     Importance: Undecided
         Status: New


** Tags: feature

-- 
You received this bug notification because you are a member of NUnit
Developers, which is subscribed to NUnit V2.
https://bugs.launchpad.net/bugs/958770

Title:
  Add Assert.Throws( Func<T> ) for properties

Status in NUnit V2 Test Framework:
  New

Bug description:
  Sometimes an object is in a certain state that causes reading its
  properties to throw exceptions. For example, the object might be
  disposed, and will throw InvalidOperationException().

  To test for such behavior, one would write

  var obj = CreateDisposedObject();

  #pragma warning disable 168
  Assert.Throws<InvalidOperationException>(() => { var v = obj.Name; }); // Assuming Name cannot be accessed passed disposing
  #pragma warning restore 168

  
  This is clearly inconvinient and instead can be remedied with this overload (and similar for error message formatting)

          public static T Throws<T>(Func<object> code) where T : Exception
          {
              return Assert.Throws<T>(() => { var v = code(); });
          }

  Having this overload would allow us to write:

  var obj = CreateDisposedObject();
  Assert.Throws<InvalidOperationException>(() => obj.Name);

  Much more consise and does not require pragmas.

To manage notifications about this bug go to:
https://bugs.launchpad.net/nunitv2/+bug/958770/+subscriptions


Follow ups

References