我正在使用surefire maven插件来运行单元测试.我的测试类看起来像这样:
public class Test1 {
@org.junit.Test
public void testThatFails(){
Assert.assertTrue("false is never true", false);
}
}
Run Code Online (Sandbox Code Playgroud)
当测试失败时,我希望看到与AssertionError相关联的消息"false is never true",但它不会打印到控制台.相反,我被指示在surefire报告目录中挖掘并找到它(很糟糕).
Running com.example.Test1
Tests run: 4, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 5.799 sec <<< FAILURE!
Running com.example.Test2
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.016 sec
Running com.example.Test3
Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.122 sec
Results :
Failed tests:
testThatFails(com.example.Test1)
Tests run: 12, Failures: 1, Errors: 0, …
Run Code Online (Sandbox Code Playgroud) 这是我第一次在stackoverflow中请与我礼貌.
我在终端上使用MacOS Sierra 10.13.6,我正在尝试为AngularJS上构建的webapp演示自定义模板.我已经安装了Gulp,但是当我启动时gulp serve
返回此错误而不启动本地服务器:
var gulp = require('gulp');
var args = require('yargs').argv;
var browserSync = require('browser-sync');
var config = require('./gulp.config')();
var del = require('del');
var $ = require('gulp-load-plugins')({lazy: true});
gulp.task('help', $.taskListing);
gulp.task('default', ['help']);
gulp.task('vet', function() {
log('Analyzing source with JSHint and JSCS');
return gulp
.src(config.alljs)
.pipe($.if(args.verbose, $.print()))
.pipe($.jscs())
.pipe($.jshint())
.pipe($.jshint.reporter('jshint-stylish', {verbose: true}))
.pipe($.jshint.reporter('fail'));
});
gulp.task('clean-tmp', function(done) {
var files = config.tmp;
clean(files, done);
});
gulp.task('clean', function(done) {
var delconfig …
Run Code Online (Sandbox Code Playgroud) 我正在尝试比较两个数字的精度和一些容差。
这是在 nUnit 中检查它的方式:
Assert.That(turnOver, Is.EqualTo(turnoverExpected).Within(0.00001).Percent);
Run Code Online (Sandbox Code Playgroud)
我正在尝试在 xUnit 中做同样的事情,但这就是我想出的全部内容:
double tolerance = 0.00001;
Assert.Equal(turnOver, turnoverExpected, tolerance);
Run Code Online (Sandbox Code Playgroud)
这不会编译,因为Assert.Equal
不接受第三个类型的参数double
。
任何人都知道在 xUnit 中执行此操作的好方法吗?
当assertion为false并使用Visual Studio调试器运行应用程序时,有没有办法打破调试器.早些时候,当我调试Windows应用程序时,我会得到一个异常并且调试器会中断,但现在在智能设备上,断言失败窗口显示堆栈跟踪,但我还希望看到变量值等.
我正在使用Selenium RC使用Java与eclipse和TestNG框架.我有以下代码片段:
assertTrue(selenium.isTextPresent("Please enter Email ID"));
assertTrue(selenium.isTextPresent("Please enter Password"));
Run Code Online (Sandbox Code Playgroud)
第一个断言失败,执行停止.但我想继续进一步的代码片段.
我试图用字符串值(名称)来识别结构.
reflect.TypeOf
回报Type
.
但类型断言需要一个type
.
我怎样才能铸造Type
到type
?
或任何处理它的建议?
http://play.golang.org/p/3PJG3YxIyf
package main
import (
"fmt"
"reflect"
)
type Article struct {
Id int64 `json:"id"`
Title string `json:"title",sql:"size:255"`
Content string `json:"content"`
}
func IdentifyItemType(name string) interface{} {
var item interface{}
switch name {
default:
item = Article{}
}
return item
}
func main() {
i := IdentifyItemType("name")
item := i.(Article)
fmt.Printf("Hello, item : %v\n", item)
item2 := i.(reflect.TypeOf(i)) // reflect.TypeOf(i) is not a type
fmt.Printf("Hello, item2 …
Run Code Online (Sandbox Code Playgroud) 我知道为什么断言编程是好的,所以我想用JavaScript.但是,我不想向用户显示错误框,这是不寻常的事情.只是忽略它,让它们重试可能会更好.
例如,此代码将生成错误框并中断用户.
function getDomainFromURL(url) {
assertTrue(url, 'URL should not be null');
...parsing
}
Run Code Online (Sandbox Code Playgroud)
所以,我会这样做.
function getDomainFromURL(url) {
if (!url) return;
...parsing
}
Run Code Online (Sandbox Code Playgroud)
我想,第二个对可用性有好处,第一个对开发有好处.因此,IMO最好将这些结合起来并使其assert
消失在生产代码上.
问题1 你是这么认为的吗?或者有什么不同的想法?
问题2 如果您这么认为,有没有什么好方法可以使用Spring3框架?
我已经从 npm 配置了软断言(npm i soft-assert),现在我的 package.josn 有 "soft-assert": "^0.2.3"
我想使用软断言功能
softAssert(actual, expected, msg, ignoreKeys)
Run Code Online (Sandbox Code Playgroud)
但不知道具体的使用步骤是什么
示例:当我在代码中使用软断言函数时,出现以下错误。
如果我这样使用
谁能告诉我如何通过一些小例子在 cypress 代码中使用这个“softAssert”函数?
现在我面临的问题
it('asserts and logs and fails', () => {
Cypress.softAssert(10, 12, "expected actual mismatch...");
cy.log("text")
Cypress.softAssertAll();
})
Run Code Online (Sandbox Code Playgroud)
我需要在软断言之后cy.log("text")
在同一个“it”块中执行我的代码,但当前测试使整个“it”块失败,而不执行“cy.log(“text”)”语句。
我想验证给定的数组不包含任何值列表。有expect.arrayContaining
,但我不明白它应该如何用于此目的。
看这个例子:
expect(["1", "2", "3"]).not.toEqual(expect.arrayContaining(["3"])
Run Code Online (Sandbox Code Playgroud)
该测试失败,这是预期的行为。我想验证“3”是否不包含在数组中。一切都很好。
但是,现在我有多个值,如果数组包含其中任何一个值,我希望测试失败。
expect(["1", "2", "3"]).not.toEqual(expect.arrayContaining(["3", "4"])
Run Code Online (Sandbox Code Playgroud)
尽管我预计该测试会失败,但该测试不会失败,因为该数组包含“3”。
我能做的是:
expect(["1", "2", "3"]).not.toEqual(expect.arrayContaining(["3"])
expect(["1", "2", "3"]).not.toEqual(expect.arrayContaining(["4"])
...
Run Code Online (Sandbox Code Playgroud)
但必须为每个值重复整个期望行似乎不是正确的方法。特别是当arrayContaining
将数组作为参数时,看起来您只能向其传递一个有用的值。
我确信这种行为有有效的用例,但我问如何以更简洁的方式通过用例来实现。基本上,我希望一旦数组包含第二个数组的一个或多个值,测试就会失败。有点像“黑名单”。
在MySQL日志中,有一个错误'InnoDB:索引0的历史记录不足'
我不知道为什么会这样.我用Google搜索并发现了这个:
InnoDB:如果使用一致快照启动事务,则在事务正在进行时将新索引添加到表中,后续UPDATE语句可能会错误地遇到错误:
ER_TABLE_DEF_CHANGED:索引的历史记录不足
此问题可能导致调试版本中的断言错误.(缺陷号14036214)
在我的情况下,我启动了事务并将数据插入到表中,在此之间我没有插入或更新该表中的数据.为什么会出现此错误?