vs2019正确使用单元测试项目

新建一个控制项目Test

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Yidosoft.Edu.Csharp.UnitTest
{
    public class Program
    {
        //string[] args
        public static void Main()
        {
            Console.WriteLine("hello world");
        }

        public string getData(string name)
        {
            return $"我的名字叫{name}";
        }
    }
}

新建一个单元测试项目

自动生成文件如下:

using System;
using System.IO;
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace Yidosoft.Edu.Csharp.UnitTest.Test
{
    [TestClass]
    public class UnitTest1
    {
        /*
(1). 定义了一个string类型的变量,用于存放我们测试的预期值,最终正确的结果。这里就是测试Main()方法向控制台写入的是否是此文本内容。

(2). 实现用于将信息写入字符串的 System.IO.TextWriter。 信息存储在基础StringBuilder 中。

(3). SetOut()方法用于设置一个新的标准输出。

(4). Main()方法是静态方法,直接使用类名.方法名()访问,表示这是一个输出操作,与SetOut()配合。

(5). 此时sw对象就是Main()方法执行的结果了,就是输出的文本内容。

(6). 使用Assert.AreEqual()比较Main()方法执行的结果与我们指定的expected变量的值是否相等,如果相等,则测试成功,说明Main()方法逻辑没有问题。
            */
        [TestMethod]
        public void TestMethod1()
        {
            string expected = "hello world*";
            //期望的值
            using (var sw=new StringWriter())
            {
                //设置sw为标准输出
                Console.SetOut(sw);
                //运行项目的主函数
                UnitTest.Program.Main();
                //sw自动接收main函数中的输出,
                var result = sw.ToString().Trim();
                Assert.AreEqual(expected,result);

            }
        }

        [TestMethod]
        public void TestMethod2()
        {
            string name = "小强";
            string expected = $"我的名字叫{name}"; ;
            
            //有返回值,不用sw接收一个Console.WriteLine输出内容
            //using (var sw = new StringWriter())
            //{
                //设置sw为标准输出
                //Console.SetOut(sw);
                //运行项目的主函数
                //UnitTest.Program.Main();
                //sw自动接收main函数中的输出,
                //var result = sw.ToString().Trim();
                UnitTest.Program program = new Program();
                //直接拿到相关对象,调用方法
                var result = program.getData(name);
                Assert.AreEqual(expected, result);

            //}
        }
    }
}

 执行测试

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值