Search code examples
c#taskmstestvoid

How to user Assert for methods with return type void in MSTest


I have a method in my c# application similar to below.

public async Task SampleMethod()
{
    try
    {
        //some code 
        await AnotherMethod();
        // some code
    }
    catch (Exception ex)
    {
        Console.Error.WriteLine(ex.Message.ToString());        
    }
}

Now, I'm trying to write a unit testcase for the above method using MStest. I have written something as below.

[TestMethod]
public async Task SampleMethodTest()
{
    ClassName cn = new ClassName();
    await cn.SampleMethod();
 }

Now how do I know if the testcase failed or succeeded. How do I use Assert here?
Any help is highly appreciated.


Solution

  • Based on our comments in my other answer, i try to show you how to get the console output. That you can read all text from console you have to set a StringWriter() to the console:

    [TestMethod]
    public async Task SampleMethodTest()
    {
        using (StringWriter stringWriter = new StringWriter())
        {
            Console.SetOut(stringWriter);
    
            ClassName cn = new ClassName();
            await cn.SampleMethod();
    
            string consoleOutput = stringWriter.ToString();
    
            Assert.IsFalse(consoleOutput.Contains("Exception"));
        }
    }
    

    I hope this works. I haven't tried it with a UnitTest, only with a console program.