繁体   English   中英

Visual Studio中的单元测试

[英]Unit Testing in Visual Studio

我想创建一个单元测试负载,以确保我的存储过程正常工作,但我失败了(我是视觉工作室测试的新手)。

基本上我想做以下事情:

<testclass()>
Dim myglobalvariable as integer

<testmethod()>
Public sub test()
    -> use stored procedure to insert a record
    set myglobalvariable = result from the sp
end sub


public sub test2()
    -> use a stored procedure to modify the record we just added
end sub

public sub test3()
    -> use a stored procedure to delete the record we just added
end sub
end class

问题是因为测试不按顺序运行,测试2和3失败,因为未设置全局变量。

建议? :'(

这里的关键词是'单位'。

单元测试应该是自包含的,即由执行测试的代码组成,并且不应该依赖于首先执行的其他测试,或者影响其他测试的操作。

有关在编写测试时应避免的事项,请参阅此处的TDD反模式列表。 http://blog.james-carr.org/2006/11/03/tdd-anti-patterns/

查看TestInitializeAttribute 您可以将其放在应该在每次测试之前运行的方法上,以分配适当的资源。

一方面注意,因为看起来你错误地解释了它们应该如何工作:单元测试不应该要求其他测试的工件。 如果您正在测试修改,则初始化/设置方法应创建要修改的空间。

看看为什么我的Visual Studio单元测试中的每个测试都会触发TestInitialize?

我认为这会指出你正确的方向。 您可以将其作为TestInitialize运行,而不是将其作为测试运行。

有“有序测试”,但它打破了每个测试独立运行的想法。

首先,您描述的测试听起来不像是单元测试,但更像是集成测试。 单元测试通常测试代码中的一个功能单元,与系统的其余部分隔离,并在内存中运行。 集成测试旨在验证系统组件在组装在一起时是否按预期工作。
然后,在没有进入系统细节的情况下,我认为我会将其作为一个单独的测试来处理它,调用多种方法 - 类似于以下内容:

[Test]
public void Verify_CreateUpdateDelete()
{
  CreateEntity();
  Assert that the entity exists
  UpdateEntity();
  Assert that the entity has been updated
  DeleteEntity();  
  Assert that the entity has been deleted
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM