c# - 在集成测试中使用 Arrange Act Assert 模式

标签 c# unit-testing integration-testing arrange-act-assert

考虑到这是对我的数据库的集成测试,使用 Arrange Act 断言 Arrange“部分”中应该包含什么?

private void Delete_Release_Test_Data(string conString)
        {
            UnitTestHelper.PrepareData(new[] { "ReleaseId" }, new object[] { 100 });
            UnitTestHelper.InsertPreparedData(conString, RELEASE_TABLE);
        }

        [Test]
        public void Delete_Release(string conString)
        {
            Delete_Release_Test_Data(conString);

            // ARRANGE
            // What should I put here ???

            // ACT
            IReleaseDataProvider provider = new ReleaseDataProvider();
            provider.DeleteRelease(100);

            // ASSERT
            Assert.IsTrue(UnitTestHelper.HasNoData(conString, string.Format("SELECT * FROM {0}", RELEASE_TABLE)));
        }

最佳答案

是否有特定原因导致第一行 Delete_Release_Test_Data(conString) 未安排?来自 this link关于安排行为断言:

Each method should group these functional sections, separated by blank lines:

  1. Arrange all necessary preconditions and inputs.
  2. Act on the object or method under test.
  3. Assert that the expected results have occurred.

插入有效的测试数据是这个测试的前提条件,这意味着它应该放在 Arrange 部分下。

注意:您还可以将此测试重命名为 Delete_Release_When_Exists,然后创建一个测试 Delete_Release_When_Doesnt_Exist 以验证抛出或返回正确的异常值是正确的。

关于c# - 在集成测试中使用 Arrange Act Assert 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9470795/

相关文章:

c# - 使用XmlArray反序列化xml文件?

c# - 在 VSTS 上运行 asp.net 核心 sln 我得到了 : Error MSB4018: The "TransformWebConfig" task failed unexpectedly

c# - 通过 C# 服务引用使用 Java Web 服务

c# - 我是否应该创建域对象的接口(interface)以在单元测试中隔离它们

node.js - 如何使用 Node JS 和 Mongodb 进行加载测试

c# - 必须声明标量变量@

Python - 扭曲和单元测试

java - 如何在 Java 中模拟嵌套方法

junit - 使用 JUnit、Maven 和 Hudson/Jenkins 进行集成测试

c# - 尝试部署 dapac : The path specified by File Ggroup FG. mdf 文件不在有效目录中时,SQL Linux docker 容器抛出错误