我没有Jenkins的经验,我目前正在研究与Jenkins进行PHP和JS自动化单元测试的不同选项.
我遇到过Chutzpah(使用PhantomJS的无头WebKit浏览器)但是:
关于Chutzpah的文件很少.虽然它确实在Chutzpah主页上声明它可以集成到TeamCity持续集成服务器中.
我有一些qunit测试设置来测试我广泛使用requirejs的代码.我使用Chutzpah在VS中执行测试.如果我在浏览器中运行测试但不在VS内部,则一切正常.它似乎忽略了我的require.config调用.如果我将我的文件中的引用更改为不指向填充程序而是直接指向文件,它将起作用,但这会破坏我的代码中的其他内容.
有人有这个工作吗?如果是这样,怎么样?我查看了他们的示例代码,但它没有使用require.config和shims.
我最近一直在使用chutzpah为我的角度应用程序编写单元测试,到目前为止一切都很好,但现在我开始编写e2e测试并且想要使用量角器,因为它是在现代角度做e2e的推荐方法但是我我不确定如何整合两者.
我一直在寻找,找不到任何例子或提示.您可以在此处查看我目前在我的宠物项目中尝试的设置:https://github.com/guerrademitos/MitoPedia
我想使用Chutzpah在Visual Studio 2013中运行JavaScript单元测试.只要我不引用angular.js,测试就会运行.使用angular.js这些测试将不会运行,VS输出给我以下消息:
Error: Error: Instrumentation error, you cannot redefine the 'window' variable in file:///e:/.../scripts/angular/angular.js:1529
in file:///C:/USERS/.../APPDATA/LOCAL/MICROSOFT/VISUALSTUDIO/12.0/EXTENSIONS/MWY50QF4.VGS/TestFiles/Coverage/blanket_jasmine_v2.js.**
Run Code Online (Sandbox Code Playgroud)
有谁知道这个问题?
我有一个相当简单的复制品,结果我不明白.
确保安装了Chutpah Test Adapter 4.0.3.使用Visual Studio 2013执行以下步骤:
qunit.TypeScript.DefinitelyTyped0.1.7;file1.ts使用以下内容将TypeScript文件添加到项目中:
/// <reference path="./Scripts/typings/qunit/qunit.d.ts"/>
QUnit.test("QUnit is working", assert => assert.ok(true));
Run Code Online (Sandbox Code Playgroud)在该文件中单击鼠标右键,然后从上下文菜单中选择"运行JS测试".
我可以确认file1.js是按预期生成的.
结果是没有运行测试,测试资源管理器显示没有测试,测试输出显示:
Error: Error: Called start() outside of a test context while already started
at start in file:///C:/Users/username/AppData/Local/Microsoft/VisualStudio/12.0/Extensions/abcxyz/TestFiles/QUnit/qunit.js (line 287)
at startQUnit in phantomjs://webpage.evaluate() (line 12)
at onPageLoaded in phantomjs://webpage.evaluate() (line 16)
in phantomjs://webpage.evaluate() (line 18)
While Running:c:\users\username\documents\visual studio 2013\Projects\ClassLibrary3\ClassLibrary3\file1.ts
------ Test started: File: c:\users\username\documents\visual studio 2013\Projects\ClassLibrary3\ClassLibrary3\file1.ts ------
Error: Error: Called start() outside of …Run Code Online (Sandbox Code Playgroud) 我是JavaScript单元测试的新手.我正在尝试测试typescript类,我的测试也是用typescript编写的,有点如下所示:
/// <reference path="../../typings/qunit/qunit.d.ts" />
import Utility1 = require("../utility");//This is script I want to test.
test("utility_test",function() {
...
var result = ...;
var expected = ...;
equal(result, expected, "Test failed");
})
Run Code Online (Sandbox Code Playgroud)
我使用VS 2015放肆测试适配器如图所示安装在这里.为了清楚起见,我已将此安装到vs 2015的扩展:Chutzpah Test Runner上下文菜单扩展,以及用于测试资源管理器的Chutzpah测试适配器,还添加了Chutzpah NuGet包.
然而,当我构建我的项目时,测试不会出现在测试资源管理器中.当我尝试从上下文菜单运行测试时,它会因此错误而失败:Error: Error: Called start() outside of a test context while already started.
谁能告诉我哪里出错了?
编辑
对于寻找require.js解决方案的人来说,这对我有用.现在我Chutzpah.json看起来如下:
{
"Framework": "qunit",
"CodeCoverageExcludes": [ "*/require.config.js" ],
"TestHarnessReferenceMode": "AMD",
"TestHarnessLocationMode": "SettingsFileAdjacent",
"TypeScriptModuleKind": "AMD", …Run Code Online (Sandbox Code Playgroud) 可能有三个人正在做我正在做的事情,但这里有:
在为Chutzpah创建测试时,我需要不仅添加我的typescript文件的引用,还需要添加我正在使用的javascript库的引用.例如:
// Typescript References (for tsc)
/// <reference path="../ref/angular-1.0.d.ts" />
// JavaScript references (for chutzpah)
/// <reference path="../lib/angular.min.js" />
// TS references for what we're actually testing...
/// <reference path="../src/modules.ts" />
Run Code Online (Sandbox Code Playgroud)
通过这种设置,我的打字稿创作的茉莉花测试运行良好.但是,angular.min.js文件填满了我的错误列表,有数百个投诉.这使得无法找到typescript语法检查程序报告的错误.
如果我删除对angular.min.js的引用,那么由于我的代码依赖于库,Chutzpah无法运行.
有没有办法强制Visual Studio忽略特定JavaScript文件引用中的错误?
我正在Visual Sutio 2013中构建一个ASP.NET网站,我正在使用Jasmine和Chutzpah测试运行器插件进行测试.测试结果正常,但未加载所需的参考.我已尝试使用以下内容启动我的测试文件以确保路径正确(并且每个版本都是正确的),但它仍然抱怨在运行测试时角度值不存在.我错过了什么?
/// <reference path="/Scripts/angular.js" />
/// <reference path="../Scripts/angular.js" />
/// <reference path="../../Scripts/angular.js" />
/// <reference path="../../../Scripts/angular.js" />
/// <reference path="../../../../Scripts/angular.js" />
/// <reference path="../../../../../Scripts/angular.js" />
/// <reference path="../../../../../../Scripts/angular.js" />
/// <reference path="../../../../../../../Scripts/angular.js" />
/// <reference path="../../../../../../../../Scripts/angular.js" />
/// <reference path="../../../../../../../../../Scripts/angular.js" />
/// <reference path="../../../../../../../../../../Scripts/angular.js" />
/// <reference path="../../../../../../../../../../../Scripts/angular.js" />
Run Code Online (Sandbox Code Playgroud)
即使这应该有效(据我所知),我也尝试chutzpah.json使用以下配置在我的项目根目录中放置一个文件:
"RootReferencePathMode":"SettingsFileDirectory"
以及测试文件中的以下参考:
/// <reference path="/Scripts/angular.js" />
但这没有任何帮助.由于Chutzpah没有承认参考标签的存在,我甚至不确定是否找到了它(尽管它显然找到了相关的测试文件).
我有点麻烦让Chutzpah使用requireJs/jasmine 2.0.这种方法适用于1.3版本,但现在对于jasmine版本2.0,chutzpah已停止接受测试.我将chutzpah升级到3.1.1以获得jasmine 2.0支持.我确实需要进行一些小的更改来从requireJs加载jasmine以使其工作但我认为这不应该影响chutzpah,因为它只是加载html.
这是我为chutzpah运行的命令.
chutzpah.console.exe path/to/SpecRunner.html
Run Code Online (Sandbox Code Playgroud)
控制台现在无法接受测试
=== 0 total, 0 failed, took 0.25 seconds ===
Run Code Online (Sandbox Code Playgroud)
但是当我运行实际的html文件时,它会找到测试

任何帮助将不胜感激
而不是HTML路线,我一直在尝试chutzpah内置配置
{
"Framework": "jasmine",
"TestHarnessReferenceMode": "AMD",
"TestHarnessLocationMode": "SettingsFileAdjacent",
"Tests": [
{"Path" : "Specs/example.spec.js"},
],
"References" : [
{"Path" : "../../../Scripts/lib/require/require.js" },
{"Path" : "../../../Scripts/app/app.js" }
]
}
Run Code Online (Sandbox Code Playgroud)
这运行然而我收到一个错误
Error: Error: Script error for: specs/example.spec
Error: Timeout occured when executing test file
While Running:C:\path\to\specs\example.spec.js
System.AggregateException: One or more errors occurred.
---> System.NullReferenceException: Object reference not set to an instance of an object.
at …Run Code Online (Sandbox Code Playgroud) 我们想用chutzpah(VS Extension)用MSBuild运行我们的Jasmine测试(在TFS-build中).所以我试图找到chutzpah.console.exe(以便我们可以手动调用它)在本地计算机上的某个地方,但我找不到它.有谁知道它通常位于何处?
chutzpah ×10
jasmine ×4
qunit ×3
typescript ×3
angularjs ×2
javascript ×2
requirejs ×2
unit-testing ×2
error-list ×1
hudson ×1
jenkins ×1
msbuild ×1
protractor ×1