当前位置: 首页 > 面试题库 >

Cobra + Viper Golang如何测试子命令?

司马高昂
2023-03-14
问题内容

我正在使用Go开发Web应用程序。到目前为止一切顺利,但是现在我将Wercker集成为CI工具,并开始关心测试。但是我的应用程序严重依赖于Cobra /
Viper配置/标志/ environment_variables方案,而且我不知道如何在运行测试套件之前正确初始化Viper值。任何帮助将非常感激。


问题答案:

当我使用Cobra /
Viper或任何其他CLI帮助程序组合时,我的实现方式是让CLI工具运行一个函数,其唯一目的是获取参数并将其传递给将执行实际工作的另一种方法。

这是使用Cobra的简短示例

package main

import (
        "fmt"
        "os"

        "github.com/spf13/cobra"
)

func main() {
        var Cmd = &cobra.Command{
                Use:   "boom",
                Short: "Explode all the things!",
                Run:   Boom,
        }

        if err := Cmd.Execute(); err != nil {
                fmt.Println(err)
                os.Exit(-1)
        }
}

func Boom(cmd *cobra.Command, args []string) {
        boom(args...)
}

func boom(args ...string) {
        for _, arg := range args {
                println("boom " + arg)
        }
}

在这里,该Boom功能很难测试,但是boom一个很简单。

你可以看到这另一个(非哑)例子这里(和对应的测试在这里)。



 类似资料:
  • Cobra 是一个纯 Java 的HTML 解析和生成器,支持 HTML 4 、JavaScript、CSS 2 示例代码: import org.lobobrowser.html.parser.*; import org.lobobrowser.html.test.*; import org.lobobrowser.html.gui.*; import org.lobobrowser.html.

  • 问题内容: 我创建了一个眼镜蛇命令并添加了一个标志: 除了自己检查值并返回错误之外,是否有其他方法可以使它成为必需项? 问题答案: 几个月前,该行为已在中进行了更改,尽管对此文档尚不十分清楚。现在,如果您将标记标记为,而没有提供此类标记,则运行命令将显示帮助加 最后指出缺少的必需标志。

  • Cobra WinLDTP 基于 LDTP,实现 Windows 下的 GUI 应用自动化测试工具。

  • 我创建了一个测试运行程序,它创建了一个动态的testng xml,这样我就可以运行带有参数的测试。所有@Test方法都在相关类中(例如LoginTest.class)。它在IDE上运行得非常完美,但在Maven(mvn测试)下,它只打印构建成功,而不运行任何测试… POM. xml中的maven-surefire插件: 我的TestRunner课程: 我的LoginTest类:

  • 从 Go 1.7 开始,引入了一个新特性:子测试,又叫 命名测试(named tests),它意味着您现在可以拥有嵌套测试,这对于自定义(和过滤)给定测试的示例非常有用。 T 和 B 的 Run 方法允许定义子单元测试和子基准测试,而不必为每个子测试和子基准定义单独的函数。这使得可以使用 Table-Driven 的基准测试和创建层级测试。它还提供了一种共享通用 setup 和 tear-down

  • 问题内容: 我想从命令行运行JUnit测试用例。我怎样才能做到这一点? 问题答案: 对于JUnit 5.x,它是: 查找在简要https://stackoverflow.com/a/52373592/1431016的全部细节https://junit.org/junit5/docs/current/user-guide/#running-tests-console-launcher 对于JUnit