应用程序测试的类型很多,包括集成测试,Web 测试,负载测试等。在最底层的是单元测试,此测试可以测试单个软件组件或方法。单元测试一般只测试开发人员的代码,不应该测试基础结构普、问题,如数据库,文件系统或网络资源等。单元测试可以使用测试驱动开发(TDD)编写,也可以将它们添加到现有代码已确认其正确性。

  在编写单元测试时,注意不要随意地在基础结构上引入依赖项。这些依赖项往往使测试更慢,更脆弱,因此应该将其保留用于继承测试。可以通过遵循显示依赖性原则,使用依赖注入从框架请求依赖关系,以此来避免应用程序代码中地这些隐藏依赖关系。

1.xUnit.net 单元测试

  创建一个 .net core 类库项目,创建一个用于测试的方法:

    public class UnitTest
{
public bool IsNum(string obj)
{
var i = ;
return int.TryParse(obj, out i);
}
}

  然后添加 xUnit 测试项目:

  创建测试成功和测试失败的方法:

    public class UnitTest1
{
private UnitTest myTest;
public UnitTest1()
{
myTest = new UnitTest();
}
[Fact]
public void TestSuccess()
{
Assert.True(myTest.IsNum(""));
} [Fact]
public void TestFail()
{
Assert.True(myTest.IsNum("q"));
}
}

  [Fact] 特性将方法表示为单个测试。

  在 VS 工具栏中选择 测试-- 运行 -- 所有测试,显示一个成功,一个失败:

  也可以使用 [Theory] 特性执行相同的代码,但具有不同输入参数的测试,使用 [InlineData] 特性来指定这些输入的参数:

        [Theory]
[InlineData("-1")]
[InlineData("")]
public void Test(string str)
{
Assert.True(myTest.IsNum(str));
}

2.MSTest 单元测试

  xUnit 使跨平台的良好选择,在面向 Windows 时,MSTest 是一个更好的选择,因为是官方提供的支持。

  创建 MSTest 测试项目,同样添加测试成功和失败的方法,在方法上添加 [TestMethod] 特性,并在类上添加特性 [TestClass]:

    [TestClass]
public class UnitTest1
{
private UnitTest myTest;
public UnitTest1()
{
myTest = new UnitTest();
}
[TestMethod]
public void TestSuccess()
{
Assert.IsTrue(myTest.IsNum(""));
} [TestMethod]
public void TestFail()
{
Assert.IsTrue(myTest.IsNum("q"));
}
}

最新文章

  1. Fedora 22中的日期和时间配置
  2. 使用python crontab设置linux定时任务
  3. java中的动态代理
  4. [GraphQL] Use GraphQLNonNull for Required Fields
  5. C/S架构程序多种类服务器之间实现单点登录(转)
  6. Spring--通过注解来配置bean
  7. 【Linux安全】防止 root 用户远程登录
  8. Ring - HDU 2296(自动机+dp)
  9. Java关键字transient和volatile
  10. UINavigationController具体解释(二)
  11. JS IIFE写法
  12. 关于使用lazytag的线段树两种查询方式的比较研究
  13. Windows 10 IoT Serials 7 – 如何用树莓派制作家庭流媒体播放器
  14. 【JS】 Javascript与BOM的互动 寻路
  15. TCP/IP和HTTP协议代理
  16. 【原创】微服务为什么一定要用docker
  17. (1)Linux常用的运维平台和工具
  18. 小电阻之大作用——CAN终端电阻
  19. JavaEE之JDBC编程[详解]
  20. Springboot配置使用ssl,使用https

热门文章

  1. 个人永久性免费-Excel催化剂功能第97波-快递单号批量查询物流信息
  2. php_review_day1
  3. Netty中的装饰者模式
  4. JasperReport报表
  5. 【JDK】JDK源码-Queue, Deque
  6. MapReduce 编程模型 & WordCount 示例
  7. Git 从master拉取代码创建新分支
  8. Linux-Windows 端口转发
  9. 运行sh文件
  10. jenkins弱口令漏洞