我想在我的 Github Actions 工作流中缓存 Android NDK。原因是我需要特定版本的 NDK 和 CMake,它们没有预装在 MacOS 运行器上。
我尝试使用以下工作流作业来实现此目的:
jobs:
build:
runs-on: macos-latest
steps:
- name: Cache NDK
id: cache-primes
uses: actions/cache@v1
with:
path: ${{ env.ANDROID_NDK_HOME }}
key: ${{ runner.os }}-ndk-${{ hashFiles(env.ANDROID_NDK_HOME) }}
- name: Install NDK
run: echo "y" | $ANDROID_HOME/tools/bin/sdkmanager "ndk;21.0.6113669" "cmake;3.10.2.4988404"
Run Code Online (Sandbox Code Playgroud)
问题在于env上下文不包含ANDROID_NDK_HOME变量。所以这意味着build.steps.with.path评估为空。
如果我使用以下步骤进行调试,则存在常规环境变量并打印正确的路径:
jobs:
build:
steps:
- name: Debug print ANDROID_NDK_HOME
run: echo $ANDROID_NDK_HOME
Run Code Online (Sandbox Code Playgroud)
但是常规环境变量只能在shell脚本中使用,而build.steps.with据我所知不能使用。
我想运行一个Dart测试,该测试使用一组输入和期望的输出重复进行,类似于JUnit。
我编写了以下测试以实现类似的行为,但问题是,如果所有测试输出的计算均不正确,则该事件只会失败一次:
import 'package:test/test.dart';
void main() {
test('formatDay should format dates correctly', () async {
var inputsToExpected = {
DateTime(2018, 11, 01): "Thu 1",
...
DateTime(2018, 11, 07): "Wed 7",
DateTime(2018, 11, 30): "Fri 30",
};
// When
var inputsToResults = inputsToExpected.map((input, expected) =>
MapEntry(input, formatDay(input))
);
// Then
inputsToExpected.forEach((input, expected) {
expect(inputsToResults[input], equals(expected));
});
});
}
Run Code Online (Sandbox Code Playgroud)
我想要使用参数化测试的原因是,以便可以在测试中实现以下行为:
n不同的输入/输出n如果所有n测试均失败,则失败时间