drone.io无头镖测试

时间:2013-10-28 21:22:51

标签: unit-testing automated-tests dart

你能在drone.io上为Dart运行基于浏览器的单元测试吗?我上次失败的版本是here。我试过sudo start xvfb,但我不确定如何指出我的index.html文件启动我的单元测试,有谁知道怎么做?我应该说我对任何实际的DOM测试都不感兴趣,但是我的库导入'dart:html'所以我不能在基本的dart vm配置中运行它。

2 个答案:

答案 0 :(得分:3)

更新:修改了构建脚本以下载content_shell。还更新了跃点任务createUnitTestTask()中content_shell的路径。


我使用hop pub package对无人机进行无头测试。您可以参考simplot库获取一个相对简单的示例。但步骤基本上是将以下内容添加到pubspec.yaml作为开发人员依赖项:

hop: '>=0.27.0'
unittest: '>=0.9.0 <0.10.0'

在项目根目录中创建工具目录并添加文件hop_runner.dart。我看起来像这样:

library dumprendertree;

import 'package:hop/hop.dart';
import 'dart:io';
import 'dart:async';

main(List<String> args) {
  addTask('test', createUnitTestTask());
  runHop(args);
}

Task createUnitTestTask() {
  return new Task((TaskContext tcontext) {
    tcontext.info("Running Unit Tests....");
    var result = Process.run('./content_shell',
        ['--dump-render-tree','test/simplot_tests.html'])
        .then((ProcessResult process) {
          tcontext.info(process.stdout);
        });
    return result;
  });
}

您可以在测试目录中看到它调用simplot_tests.html文件的位置。

然后我的无人机脚本是:

$DART_SDK/../chromium/download_contentshell.sh
unzip content_shell-linux-x64-release.zip
mv drt*/* .
pub get
sudo start xvfb
dart --checked tool/hop_runner.dart test

simplot_tests.html文件如下所示:

<!DOCTYPE html>

<html>
  <head>
    <title>Unit Tests for Simplot Library</title>
  </head>
  <body>
    <script type="text/javascript" src="packages/unittest/test_controller.js"></script>
    <script type="text/javascript" src="packages/browser/dart.js"></script>
    <script type="application/dart" src="simplot_tests.dart"></script>
  </body>
</html>

最后,dart文件看起来像这样:

import 'package:simplot/simplot.dart';
import 'package:unittest/unittest.dart';
import 'package:unittest/html_enhanced_config.dart';
import 'dart:html';
import 'dart:math';

part 'tests/logarithmic_tests.dart';
part 'tests/time_stamp_tests.dart';
part 'tests/axis_configure_tests.dart';
part 'tests/create_single_plot.dart';
part 'tests/create_multiple_plots.dart';
part '../lib/src/axis_config.dart';

void main() {
  print('Running unit tests for simplot library.');
  useHtmlEnhancedConfiguration();
  group('All Tests:', (){
    test('test of logarithmic functions', () => logarithmicTests());
    test('test of time stamp', () => timeStampTests());
    test('test of axis configuration', () => axisConfigTests());
    test('test of creating a single plot', () => createSinglePlot());
    test('test of creating multiple plots', () => createMultiplePlots());
  });
}

希望这能让你开始。

答案 1 :(得分:2)

这是xml2json

的Drone脚本
pub install
sudo start xvfb
content_shell --args --dump-render-tree test/xml2json.html | sed -n 2p | grep PASS

它使用标准的基于HTML的单元测试,即包括htmlconfiguration()。

grep只是检查通过/失败,你可能不需要这个。