我正在使用新的测试包移植旧的vm unittest文件。有些依赖于我的测试文件夹的子目录中的输入文件。在使用Platform.script查找此类文件的位置之前。使用时效果很好
$ dart test/my_test.dart
但是使用
$ pub run test
现在它指向一个临时文件夹(tmp / dart_test_xxxx / runInIsolate.dart)。我无法再找到测试输入文件。我不能依赖当前路径,因为可能会从其他工作目录运行测试。
有没有办法找到my_test.dart的位置(或事件的项目根路径),我可以从中导出文件的位置?
同时,我有以下解决方法。如果我直接运行它或使用pub run test运行它,这是一个丑陋的解决方法,它会为我获取当前测试脚本的目录名称。如果实现中发生任何更改,肯定会中断,但是我迫切需要此...
library test_utils.test_script_dir;
import 'dart:io';
import 'package:path/path.dart';
// temp workaround using test package
String get testScriptDir {
String scriptFilePath = Platform.script.toFilePath();
print(scriptFilePath);
if (scriptFilePath.endsWith("runInIsolate.dart")) {
// Let's look for this line:
// import "file:///path_to_my_test/test_test.dart" as test;
String importLineBegin = 'import "file://';
String importLineEnd = '" as test;';
int importLineBeginLength = importLineBegin.length;
String scriptContent = new File.fromUri(Platform.script).readAsStringSync();
int beginIndex = scriptContent.indexOf(importLineBegin);
if (beginIndex > -1) {
int endIndex = scriptContent.indexOf(importLineEnd, beginIndex + importLineBeginLength);
if (endIndex > -1) {
scriptFilePath = scriptContent.substring(beginIndex + importLineBegin.length, endIndex);
}
}
}
return dirname(scriptFilePath);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句