gpt4 book ai didi

testing - 我们如何根据源代码布局测试代码

转载 作者:行者123 更新时间:2023-11-28 21:31:57 25 4
gpt4 key购买 nike

那么这里的目标是什么:

  1. 测试隔离意味着测试代码无法通过源代码访问,因为这会导致安全问题并引发漏洞。

  2. 我们可以扩展和推广测试框架,而不仅仅是测试特定来源。

  3. 无论源代码如何变化,我们都可以进行重构和改进

  4. 由于隔离,我们可以尝试针对源代码的各个分支运行相同的测试框架

  5. 测试代码、运行时或溢出的性能问题不会直接影响测试运行,因为我们可以轻松恢复到性能良好的测试框架版本。

问题:

测试代码和源代码是否应该在同一个分支?我们将如何设置它?这将如何与颠覆一起工作,利弊是什么?

最佳答案

这个问题有点不精确 - 我假设你的问题是指单元测试代码,而不是验收测试、性能测试等。

首先要考虑的是测试代码和被测代码之间存在紧耦合。您需要管理该依赖性;你如何管理它在很大程度上取决于你的发展战略。如果您使用分支来分隔功能或版本,我会将该分支的测试代码放在同一个分支中——您不能指望它可以处理来自另一个分支的代码。为测试代码添加一个单独的分支会使事情变得更加复杂,但不一定会增加任何好处。

其次 - 希望很明显 - 您需要管理依赖项。您的测试代码取决于被测代码;被测代码不应依赖于测试代码。使用 JDepend 或 NDepend 等工具可以让您监控这些依赖关系。从测试代码显式管理依赖项通常是个好主意——如果您发现所有测试都依赖于代码下测试中的单个类,那么如果出现问题,该依赖项可能会破坏每个测试。

现在,为了回答您的具体问题,我假设您在 SVN 中有一个(主要)功能的分支,并且您已经建立了一个标准的项目结构,按照这些行

 \src   
\app
\test

应用程序代码位于“app”文件夹中; “测试”目录中的测试代码。

在这种情况下,您的 SVN 可能是:

\trunk
\app
\com.me.app.views
\com.me.app.models
\com.me.app.controllers
\test
\com.me.app.tests.views
\com.me.app.tests.models
\com.me.app.tests.controllers
\branches
\feature1
\app
\com.me.app.views
\com.me.app.models
\com.me.app.controllers
\test
\com.me.app.tests.views
\com.me.app.tests.models
\com.me.app.tests.controllers
\feature2
\app
\com.me.app.views
\com.me.app.models
\com.me.app.controllers
\test
\com.me.app.tests.views
\com.me.app.tests.models
\com.me.app.tests.controllers

关于testing - 我们如何根据源代码布局测试代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17178077/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com