我想知道为什么我的NUnit测试在30秒后突然成功终止,而他们通常需要至少20分钟。然后我查看了构建日志,发现在将构建代理上的单声道版本升级到v 5.4.1后,测试运行器崩溃,退出代码为134。
经过一些研究后,我发现了以下内容:
- 测试运行器在使用mono 4.8.1(我们已安装)时也可以工作,但测试代码不能用它编译
- Ì也尝试手动启动erunner:/Library/Frameworks/Mono.framework/Versions/5.4.1/bin/mono -v /Applications/TeamCity/buildAgent/plugins/dotnetPlugin/bin/JetBrains.BuildServer.NUnitLauncher.exe
这给了我以下错误:[1] 3461 abort /Library/Frameworks/Mono.framework/Versions/5.4.1/bin/mono -v
3461
每次重试时都会发生变化。
- 根据this thread,退出代码134表示程序崩溃。
由于错误输出,我不确定,是崩溃的TeamCity测试运行器,崩溃的单声道还是使单声道崩溃的TeamCity。
任何帮助表示赞赏:)
答案 0 :(得分:1)
我终于弄明白了。显然,Mono 5.4.1缺少Mono 5.2及更早版本附带的重要NUnit2组件。为了使测试再次起作用,我不得不添加#include <stdio.h>
void main(){
int s_array[] = { 5, 7, 13 };
int array[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 };
int i, Bcount, m, counter = 1, j = 4;
//i, Bcount and m are loop counters
//counter will count number of repeated elements
//j is the number of elements in s_array + 1
for( i = 0; i <= 15; i++ ){
if( s_array[0] == array[i] ){ // does the first element exist?
for( Bcount = 1; Bcount < j; Bcount++ ){ //checking the rest
for( m = i; m < 15; m++){
if( s_array[Bcount] == array[m] ){
counter++;
i = m;
break;
}
}
}
}
if( j == counter ){
printf( "B is a sub-sequence of A.\n" );
break;
}
else{
printf( "B is not a sub-sequence of A.\n" );
break;
}
}
}
NuGet包(不是NUnit.Console
,因为它缺少必需的扩展名)并更新TeamCity构建步骤以使用NUnit.ConsoleRunner
,如所述{{ 3}}
答案 1 :(得分:0)
对于其他可能遇到的问题,我通过将NUnit构建步骤从NUNit 2.6.3更改为NUnit 3.10来解决。我没有更改任何代码/包,仅更改了TC配置。