用Ruby测试整个脚本

用Ruby测试整个脚本,ruby,testing,Ruby,Testing,测试整个脚本的最佳方法是什么?我想测试脚本是否返回(打印)正确的结果。到目前为止,我还有另一个脚本,它或多或少只是: #test.rb expected = 'test' output = `script.rb --many params` if output != expected puts "Error" end 在本例中,我要测试的脚本名为script.rb。 干杯。使用测试单元您将得到如下代码: class TestScript < Test::Unit::TestCase

测试整个脚本的最佳方法是什么?我想测试脚本是否返回(打印)正确的结果。到目前为止,我还有另一个脚本,它或多或少只是:

#test.rb

expected = 'test'
output = `script.rb --many params`
if output != expected
  puts "Error"
end
在本例中,我要测试的脚本名为script.rb。
干杯。

使用
测试单元
您将得到如下代码:

class TestScript < Test::Unit::TestCase
  def test_output
    assert_equal 'test', `script --options`
  end
end
您可以在此基础上添加测试,以测试流程的状态,确保它成功,并且在STDERR上没有任何输出等等

在测试产生大量文本输出(例如JSON数据、格式化列表)的内容时,我发现最好在
test/expect
这样的地方创建文件,并将文件与输出进行比较,而不是在源代码中定义文本。这样一来,首先就可以轻松创建文件:

old_script > test/expected/old_script.default
old_script --option > test/expected/old_script.with-option

它还使您的版本控制差异在需要调整时更易于阅读。

使用
测试单元
您将得到如下代码:

class TestScript < Test::Unit::TestCase
  def test_output
    assert_equal 'test', `script --options`
  end
end
您可以在此基础上添加测试,以测试流程的状态,确保它成功,并且在STDERR上没有任何输出等等

在测试产生大量文本输出(例如JSON数据、格式化列表)的内容时,我发现最好在
test/expect
这样的地方创建文件,并将文件与输出进行比较,而不是在源代码中定义文本。这样一来,首先就可以轻松创建文件:

old_script > test/expected/old_script.default
old_script --option > test/expected/old_script.with-option
它还使您的版本控制差异在需要调整时更易于阅读。

定义测试夹具 测试整个脚本的最佳方法是什么?我想测试脚本是否返回(打印)正确的结果

您需要一个包含已知输入值和预期结果的测试夹具。换言之:

  • 给定已知的输入值
  • 当你运行程序时
  • 然后您将收到预期的答案作为输出
  • 请注意,以这种方式测试整个程序可以告诉您是否从一组输入中获得了正确的结果,但它通常不会提供问题所在的洞察力。然而,许多形式的验收测试都使用这种“黑盒”方法进行测试,因此,只要您了解其局限性,这肯定是一种合理的方法

    可能的框架 可能的测试框架列表并不是无限的,但是如果您不想从头开始编写自己的测试工具,您可能希望尝试一种更流行的测试框架。启动您自己的研究的一些可能性包括:

    当然还有很多其他的,但是根据您最初的问题,如果您想测试整个脚本而不是它的组成部分,您可能希望将重点放在ATDD或BDD测试工具上,而不是单元测试。

    定义测试夹具 测试整个脚本的最佳方法是什么?我想测试脚本是否返回(打印)正确的结果

    您需要一个包含已知输入值和预期结果的测试夹具。换言之:

  • 给定已知的输入值
  • 当你运行程序时
  • 然后您将收到预期的答案作为输出
  • 请注意,以这种方式测试整个程序可以告诉您是否从一组输入中获得了正确的结果,但它通常不会提供问题所在的洞察力。然而,许多形式的验收测试都使用这种“黑盒”方法进行测试,因此,只要您了解其局限性,这肯定是一种合理的方法

    可能的框架 可能的测试框架列表并不是无限的,但是如果您不想从头开始编写自己的测试工具,您可能希望尝试一种更流行的测试框架。启动您自己的研究的一些可能性包括:


    当然还有很多其他的,但是根据你最初的问题,如果你想测试整个脚本而不是它的组成部分,你可能会想把重点放在ATDD或BDD测试工具上,而不是单元测试。

    通常你会在程序的部分上写测试,如果有必要的话,还会写一个“集成测试”从整体上看,这更像是一个黑箱操作。像这样的工具可以帮助自动化测试并验证对代码所做的更改。但我真正感兴趣的是测试整个脚本。它是一些旧脚本的替代品,JSON中有一些配置文件,提供用户输入的多种方式等等。因此,我想测试它的行为是否与旧脚本完全相同(返回相同的结果)-这是最重要的事情。方法是不够的,因为我可能忽略了一些可以使用旧脚本但不能再使用新脚本的内容。您可以编写一个测试,使用诸如
    assert
    之类的基本内容来完成这里的测试。如果你觉得这还不够的话,还有一些经典的库或替代方案。通常你会在程序的某个部分编写测试,如果有必要的话,会以更为黑盒的方式对整个程序进行“集成测试”。像这样的工具可以帮助自动化测试并验证对代码所做的更改。但我真正感兴趣的是测试整个脚本。它是一些旧脚本的替代品,JSON中有一些配置文件,提供用户输入的多种方式等等。因此,我想测试它的行为是否与旧脚本完全相同(返回相同的结果)-这是最重要的事情。方法是不够的,因为我可能忽略了一些可以使用旧脚本但不能再使用新脚本的内容。您可以编写一个测试,使用诸如
    assert
    之类的基本内容来完成这里的测试。如果您觉得这还不够,可以使用经典库或其他替代方案。我们开发了另一个CLI测试框架。它也可以