我们有一套约1100个单元在ng测试中运行,目前在Angular 7.2.5中运行到4分钟内完成,没有故障,在Angular 8.0.0中运行到4分钟前完成,随机故障,减速和断开。
测试在Angular 7中成功运行,无论是在镀铬还是镀铬。
已尝试:
通过在1100个测试中的每个描述块中运行cleStylesFromDOM
。
在《角度8》中,我们试图将业力从4.1.0回归到3.0.0,将茉莉花核从3.4.0回归到2.99.1,但没有成功。
我试过8.1。1与业力4.1。0和jasmine core 3.4。没有成功。
增加业力超时:
browserNoActivityTimeout:120000,captureTimeout:60000,ReportsLower:2000,browserDisconnectTolerance:2,browserDisconnectTimeout:20000,browserSocketTimeout:20000,processKillTimeout:20000
增加了节点的内存。js to——最大旧空间大小=8192
关闭“ng测试”源映射生成和监视
在因果报应中关掉茉莉花。conf.js:jasmine:{
对于每个“描述”块中的每个“it”,在每个“描述”块后面调用fixture。摧毁
尝试更改之前每个TestBed设置到之前所有建议在这里:
包裹json
{
"name": "myapp",
"version": "0.0.0",
"scripts": {
"ng": "ng",
"build": "ng build",
"test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e"
},
"private": true,
"dependencies": {
"@angular/animations": "~8.0.0",
"@angular/common": "~8.0.0",
"@angular/compiler": "~8.0.0",
"@angular/core": "~8.0.0",
"@angular/forms": "~8.0.0",
"@angular/platform-browser": "~8.0.0",
"@angular/platform-browser-dynamic": "~8.0.0",
"@angular/router": "~8.0.0",
"@ng-bootstrap/ng-bootstrap": "^4.0.0",
"@ng-select/ng-select": "^2.20.0",
"@ngrx/effects": "^8.0.1",
"@ngrx/entity": "^8.0.1",
"@ngrx/router-store": "^8.0.1",
"@ngrx/store": "^8.0.1",
"@ngrx/store-devtools": "^8.0.1",
"@ngx-translate/core": "^11.0.1",
"angular-resizable-element": "^3.2.4",
"angular-split": "^3.0.1",
"bootstrap": "^4.1.3",
"core-js": "^2.6.9",
"jquery": "^3.3.1",
"jquery-ui": "^1.12.1",
"jquery-ui-bundle": "^1.11.4",
"jquery.fancytree": "^2.26.0",
"lodash": "^4.17.11",
"moment": "^2.17.1",
"ngx-infinite-scroll": "^7.2.0",
"ngx-nvd3": "^1.0.9",
"ngx-restangular": "^5.0.0-rc1",
"popper.js": "^1.15.0",
"rxjs": "~6.4.0",
"tslib": "^1.9.0",
"ui-contextmenu": "^1.18.1",
"urijs": "^1.18.6",
"zone.js": "~0.9.1"
},
"devDependencies": {
"@angular-devkit/build-angular": "~0.800.0",
"@angular/cli": "~8.0.2",
"@angular/compiler-cli": "~8.0.0",
"@angular/language-service": "~8.0.0",
"@types/jasmine": "~3.3.8",
"@types/jasminewd2": "~2.0.3",
"@types/jquery": "^3.3.29",
"@types/jquery.fancytree": "^2.7.32",
"@types/node": "^8.9.5",
"codelyzer": "^5.0.0",
"jasmine-core": "~3.4.0",
"jasmine-marbles": "^0.6.0",
"jasmine-spec-reporter": "~4.2.1",
"karma": "~4.1.0",
"karma-chrome-launcher": "~2.2.0",
"karma-coverage-istanbul-reporter": "~2.0.1",
"karma-jasmine": "~2.0.1",
"karma-jasmine-html-reporter": "^1.4.0",
"protractor": "~5.4.0",
"ts-mockito": "^2.3.1",
"ts-node": "~7.0.0",
"tslint": "~5.15.0",
"typescript": "~3.4.3",
"webpack": "^4.37.0"
}
}
因果报应。conf.js
module.exports = function (config) {
config.set({
basePath: '',
frameworks: ['jasmine', '@angular-devkit/build-angular'],
browsers: ['ChromeHeadless'],
plugins: [
require('karma-jasmine'),
require('karma-chrome-launcher'),
require('karma-jasmine-html-reporter'),
require('karma-coverage-istanbul-reporter'),
require('@angular-devkit/build-angular/plugins/karma')
],
client: {
clearContext: false // leave Jasmine Spec Runner output visible in browser
},
coverageIstanbulReporter: {
dir: require('path').join(__dirname, './coverage/webr3'),
reports: ['html', 'lcovonly', 'text-summary'],
fixWebpackSourcePaths: true
},
reporters: ['progress', 'kjhtml'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: true,
singleRun: false,
restartOnFileChange: true
});
};
测试示例:
describe('PageNotFoundComponent', () => {
let component: PageNotFoundComponent;
let fixture: ComponentFixture<PageNotFoundComponent>;
let selectedTextElement: HTMLElement;
let router;
let location;
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useClass: WebpackTranslateLoader
}
}),
RouterTestingModule.withRoutes(
[
{
path: 'basepath',
redirectTo: 'nwi'
},
{
path: '**',
component: PageNotFoundComponent
}
]
),
],
declarations: [ PageNotFoundComponent ]
})
.compileComponents();
}));
afterAll(() => {
cleanStylesFromDOM();
});
beforeEach(() => {
fixture = TestBed.createComponent(PageNotFoundComponent);
component = fixture.componentInstance;
fixture.detectChanges();
router = TestBed.get(Router);
location = TestBed.get(Location);
});
it('should show 404 text', fakeAsync(() => {
const navigationExtras: NavigationExtras = {
queryParams: {}
};
router.navigate([`/unknown`], navigationExtras);
tick();
expect(decodeURI(location.path())).toBe(`/unknown`);
const textElement: HTMLElement = fixture.nativeElement;
selectedTextElement = textElement.querySelector('p');
expect(selectedTextElement.innerText).toEqual('404');
}));
});
我们预计~1100个测试将在Angular 8中运行到完成,不会像Angular 7中那样出现故障。
以下是不应发生的故障:
铬75.0。3770(Mac OS X 10.13.6)VMComponent应验证VU抑制获取正确呈现失败的类型错误:无法在UserContext读取null的属性“className”。(http://localhost:9876/_karma_webpack_/webpack:/src/app/components/vm-禁用的风险半径/vm禁用的风险半径。组成部分规范ts:72:18)在特区。援引(http://localhost:9876/_karma_webpack_/webpack:/node_modules/zone.js/dist/zone-常青树。js:359:1)在Proxyzonepe。奥尼沃克(http://localhost:9876/_karma_webpack_/webpack:/node_modules/zone.js/dist/zone-测试。js:308:1)在ZoneDelegate。援引(http://localhost:9876/_karma_webpack_/webpack:/node_modules/zone.js/dist/zone-常青树。js:358:1)在区域。跑(http://localhost:9876/_karma_webpack_/webpack:/node_modules/zone.js/dist/zone-常青树。js:124:1)在runInTestZone(http://localhost:9876/_karma_webpack_/webpack:/node_modules/zone.js/dist/zone-测试。js:561:1)在UserContext。(http://localhost:9876/_karma_webpack_/webpack:/node_modules/zone.js/dist/zone-测试。js:576:1)在
...还有20个随机故障,最后断开连接:
24 07 2019 12:30:11.055: WARN[Chrome75.0.3770(Mac OS X 10.13.6)]:断开(0次)重新连接失败之前超时2Chrome 75.0.3770(Mac OS X 10.13.6)错误断开重新连接失败之前超时2000ms(传输错误)Chrome75.0.3770(Mac OS X 10.13.6):执行582/1134(20失败)(跳过3)断开连接(4分钟7.005秒/3分钟53.442秒)
不确定您提到的CleStylesFromDOM
做了什么,但是最近我在1800测试大型套件中遇到了类似的问题。症状相似:
FAILED
Error: Timeout - Async function did not complete within 5000ms (set by jasmine.DEFAULT_TIMEOUT_INTERVAL)
at <Jasmine>
性能分析表明,每次测试后,
getTestBed().initTestEnvironment(
BrowserDynamicTestingModule,
platformBrowserDynamicTesting(),
{teardown: {destroyAfterEach: true}}
);
{teardown:{destroyAfterEach:true}}
是感兴趣的行。不幸的是,文档中没有太多关于destroyAfterEach
。对我来说,打开设置最终会带来稳定、始终绿色的跑步:
它揭示了测试中的bug,这些bug在单独的测试中被资源重用所掩盖。我能够在本地复制和修复许多不稳定测试的实例
我最近更新了我的项目的gradle版本,从2.14.1到3.0。从那以后,gradle构建每次都失败,出现以下错误: 错误:原因:org.gradle.api.internal.tasks.defaultTaskinputs$TaskinputUnionFileCollection无法强制转换为org.gradle.api.internal.file.Collections.defaultConf
我正在设置我的第一个Jenkins服务器来构建和测试现有的maven项目,而jenkins无法完成单元测试。 当我从命令行运行“mvn清洁安装”时,所有模块都会构建并通过它们的单元测试。然而,Jenkins只能运行第一组单元测试(通过),然后以某种方式出错。 我用的是詹金斯1.499。 以下是来自顶级pom报告插件的一些相关信息:
和下面的一些行 我在1.7.6版本中使用了frontend-maven-plugin,并将其插入到pom.xml中。 我的karma.conf.js看起来是这样的: 我的Package.json: My Angular.json: 我使用以下版本的软件包: IDE 我做错了什么?
我正在和TestNG一起学习Java中的Selenium Webdriver。我正在使用谷歌登录页面进行测试。 我在按顺序运行测试用例时遇到了麻烦。我想做的是: 运行@BeforeTest 运行测试 1(登录成功) 运行@AfterTest(关闭浏览器和驱动程序) 等到 AfterTest 方法完成,然后运行测试 2(登录失败) 但我的经历是: 运行@BeforeTest 运行测试 1(登录成功)
我不知道为什么,我的spring boot测试在eclipse中以junit形式运行时成功了,但当我执行以下命令时失败了: 这是我的建筑。格雷德尔: 运行gradle命令后,由于各种原因,我的所有测试都失败了,主要原因是无法创建bean并将它们自动连接到测试类。 下面是一个测试示例: 这就是构建/测试失败的原因: 我很感激能得到的帮助,我已经在这件事上耽搁了好几个小时了。 更新这是我的gradle