你可以在drone.io 上为 Dart 运行基于浏览器的单元测试吗?我最后一次失败的构建在这里。我试过sudo start xvfb
了,但我不确定如何将它指向启动单元测试的 index.html 文件,有人知道该怎么做吗?我应该说我对任何实际的 DOM 测试都不感兴趣,但是我的库导入了 'dart:html' 所以我不能在基本的 dart vm only 配置中运行它。
问问题
676 次
2 回答
3
更新: 修改构建脚本以下载 content_shell。还更新了 hop task 中 content_shell 的路径createUnitTestTask()
。
我使用hop pub 包对无人机进行无头测试。您可以参考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());
});
}
希望这能让你开始。
于 2013-10-29T00:30:17.747 回答
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 只是为了检查通过/失败,你可能不需要这个。
于 2013-10-29T04:53:55.107 回答