Unit testing, Exercise Stack

Hi, using the example code from the Unit test exercise, I am unable to get this to throw an exception no matter what I do.

    [Test]
    public void Push_NotNull_ThrowException()
    {
       var stack = new Stack<string>();
        Assert.That(() => stack.Push(null), Throws.TypeOf<ArgumentNullException>());
    }

Is this an environment issue as I am using the same Version of NUnit as Mosh here?

Below is the result of the test.

Message:
Expected: <System.ArgumentNullException>
But was: no exception thrown

Stack Trace:
StackTests.Push_NotNull_ThrowException() line 18

I will answer this now that I have figured out the error of my ways here, I did not reference Fundamentals.Stack :frowning :flushed:

Just incase someone else makes the same sill mistake.

Well, I think there are some logical issues with your code.
Please try this code once.

public class Stack<T>
{
    private List<T> items = new List<T>();

    public void Push(T item)
    {
        if (item == null)
        {
            throw new ArgumentNullException(nameof(item), "Item cannot be null.");
        }
        items.Add(item);
    }
}

I hope this code will fix your error.
Thanks

Excellent advice thank you gulshan212

1 Like

What does the T stands for?
Thank you!

Hello,

I am pretty new to nUnit myself but I am using it daily for the last 2 weeks at work.

Try to use Assert.Throws instead.

As for the T part it belongs to generic programming.

Basically instead of doing the same code for different types you use a generic parameter to represent a type. You can also add constraints to tell what is allowed or not to be a T.

Cheers.

This is Mosh code…

On your test you may be using the common stack of the .net framework that is in System.Collections.Generic… you need reference the stack created in fundalmentals Folder

image