我试图使用JSTestDriver自动化我的Javascript测试与Hudson作为持续集成后端.我的目标是让Hudson至少制作一份关于测试结果的报告,因为失败的测试失败是最理想的结果.
我在网上快速搜索,发现Hudson似乎没有JSTestDriver的直接插件(它只有一个用于TeamCity).我正在考虑使用Hudson监视javascript测试作为外部工作,但我感觉这比需要的更复杂.
有没有人对上述场景有经验/建议?
谢谢.
我有很多Jasmine单元测试,它们运行Javascripts代码的单元测试.他们使用Jasmine-jquery插件来进行DOM操作.他们使用loadFixture来加载HTML的装置
我尝试使用JsTestDriver和JasmineAdapter自动化这些单元测试但是所有涉及DOM-jquery操作的测试都没有通过?这有什么问题吗?有没有办法在JsTestDriver中使用Jasmine-jquery?
我试图弄清楚如何正确使用 JS 测试驱动程序的 assertException 方法。从谷歌的文档应该是:assertException([msg], callback, error)。但是,无论我做什么,我总是会收到此测试的 [ERROR](而不是 [PASS],因为有异常):
ComponentTest.prototype.testEnforceUniqueComponentIds = function() {
assertException(function(){
this.component = new myNamespace.component(this.testComponentSettings);
});
}
Run Code Online (Sandbox Code Playgroud)
在我的 src JS 中:
myNamespace.component = function(params){
if (typeof params.selector == 'undefined'){
throw new Error('no selector provided');
}
this.settings = jQuery.extend({}, {
id : 'defaultComponentId',
type : 'defaultComponentType',
selector : 'body',
isUnique : false
}, params);
if(typeof(myNamespace.componentRegistry[params.id]) === "undefined"){
myNamespace.registerComponent(this);
} else {
throw new Error('non-unique component id provided');
}
}
Run Code Online (Sandbox Code Playgroud)
这是 js-test-driver 的输出:
C:\xampp2\htdocs\myNamespace\v2>java -jar JsTestDriver.jar --tests all --verbose …Run Code Online (Sandbox Code Playgroud) 背景:
我来自Java背景,所以不太熟悉Javascript.
我们计划对现有(遗留)代码和未来工作引入JavaScript单元测试.我们主要是一家java商店(Spring,Weblogic等).
我们正在寻找能够与IDE(IntelliJ构思)和声纳良好集成的选项,以及能够将它们作为持续集成的一部分运行.
JsTestDriver似乎勾选了所有方框.
题:
我们现有的许多javascript代码是a)嵌入在JSP中,b)利用jQuery直接与页面元素进行交互.
我们应该如何测试严重依赖于DOM的函数.这是我正在谈论的函数的一些代码示例:
function enableOccupationDetailsText (){
$( "#fldOccupation" ).val("Unknown");
$( "#fldOccupation_Details" ).attr("disabled", "");
$( "#fldOccupation_Details" ).val("");
$( "#fldOccupation_Details" ).focus();
}
Run Code Online (Sandbox Code Playgroud)
要么
jQuery(document).ready(function(){
var oTable = $('#policies').dataTable( {
"sDom" : 'frplitip',
"bProcessing": true,
"bServerSide": true,
"sAjaxSource": "xxxx.do",
"sPaginationType": "full_numbers",
"aaSorting": [[ 1, "asc" ]],
"oLanguage": {
"sProcessing": "Processing...",
"sLengthMenu": "Show _MENU_ policies",
"sZeroRecords": "No matching policies found",
"sInfo": "Showing _START_ to _END_ of _TOTAL_ policies",
"sInfoEmpty": "Showing 0 to 0 of 0 policies",
"sInfoFiltered": "(filtered from …Run Code Online (Sandbox Code Playgroud) 尝试将测试支持添加到我的项目中。附带了coverage插件的JsTestDriver。虚拟测试正常运行,但是当我加载所有源文件时,我的应用程序崩溃并显示以下内容:
[java] **line 109:12 no viable alternative at input 'formFound'**
[java] Exception in thread "main" com.google.jstestdriver.coverage.CodeInstrumentor$InstrumentationException: error instrumenting /path/discover.js
[java] at com.google.jstestdriver.coverage.CodeInstrumentor.instrument(CodeInstrumentor.java:74)
[java] at com.google.jstestdriver.coverage.CoverageInstrumentingProcessor.process(CoverageInstrumentingProcessor.java:62)
Run Code Online (Sandbox Code Playgroud)
这行代码如下所示:
let formFound = tryToFindLoginForm();
Run Code Online (Sandbox Code Playgroud)
我将该定义更改为
var formFound = tryToFindLoginForm();
Run Code Online (Sandbox Code Playgroud)
之后,JSTD将传递该字符串,但在下一个let语句中死亡。有什么办法可以解决这个问题,告诉JSTD代码中使用的javascript版本或其他内容?
不使用let将整个代码重写为版本将是一个很大的问题。
预先感谢您的帮助。
我开始使用JavaScript的测试驱动开发,但我想在我的不同项目中开始使用它.
我想知道什么是典型的错误以及如何避免它们?
此外,我想知道我应该阅读什么,以使测试驱动开发更容易学习并应用于我的代码.
提前致谢.
有没有办法在无头状态下使用jsTestDriver加载浏览器但是无头(你看不到浏览器)或者加载最小化?
如何在OSX平台上的Safari浏览器上无头地运行我的jstestdriver测试用例?我可以使用xvfb-run命令在Linux上实现相同的功能.但是,OSX中没有这样的包装命令.我尝试执行以下2个命令,然后在safari中执行我的测试用例.
Xvfb :99 -ac &
export DISPLAY=:99
Run Code Online (Sandbox Code Playgroud)
但是,通过Safari浏览器显示而不是在xvfb环境中运行.好像Safari完全忽略了DISPLAY命令.有没有办法在OSX上无头地运行Safari?
我有问题.我想在Android浏览器中自动化测试.
我的要求:
我有JS Test Drivermaven项目需要在android浏览器中测试.
所以我想做的是
在maven pom.xml文件中,而不是指向chrome作为
<browser.command>C:\Program Files (x86)\Google\Chrome\Application\chrome.exe</browser.command>
Run Code Online (Sandbox Code Playgroud)
创建bat file哪个将运行在android模拟器浏览器中启动URL链接的命令并指向它bat file.
我的问题是我不知道写什么命令,将从命令行在Android模拟器浏览器中午餐特定的URL.
有什么建议?
我想使用JsTestDriver来驱动我的QUnit测试,但我对如何处理#qunit-fixture标记感到困惑.
标准的QUnit测试运行器是一个HTML页面.
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<link rel="stylesheet" href="/qunit/qunit.css" type="text/css" />
<script type="text/javascript" src="/qunit/qunit.js"></script>
<script type="text/javascript" src="test-script.js"></script>
</head>
<body>
...
<div id="qunit-fixture">
*** tests depend on markup that goes here ***
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
JsTestDriver有一个可用于加载和运行test-script.js 的QUnitAdapter,但是我没有看到任何获取标记的调整#qunit-fixture.
我错过了什么吗?适配器是否应该能够运行现有的QUnit测试?或者它只是一种使用QUnit的断言框架与JsTestDriver的方法?
js-test-driver ×10
javascript ×7
unit-testing ×4
qunit ×2
android ×1
hudson ×1
jasmine ×1
jquery ×1
macos ×1
maven ×1
safari ×1
tdd ×1
xvfb ×1