import 'dart:io';
main() {
print("Enter an even number : ");
int evenNo = int.parse(stdin.readLineSync());
assert(evenNo % 2 == 0, 'wrong input');
print("You have entered : $evenNo");
}
Run Code Online (Sandbox Code Playgroud)
为了让这段代码正常工作,我必须使用“--enable-asserts”标签运行 dart 文件,并且在执行断言函数之前不传递“--enable-asserts”标签。为什么这个功能被禁用了?
I wrote a MFC based C++ program, while the release version runs smoothly on the target machine, the debug version can not. it appears assert failed as the following screenshot shows:

I need this debug version to run on the target machine, so I can remote debug it by attaching to it from my developing machine.
I use the new version of dependency walker (https://github.com/lucasg/Dependencies), but it gives same result as the release one (no red alart), even …
当我使用"java -ea A"运行以下代码时,断言更正会触发,但我没有提到第二个参数.
public class A {
public A() {
assert 1==2, "We have a problem";
}
public static void main(String[] args) {
A a = new A();
}
}
Run Code Online (Sandbox Code Playgroud)
似乎无法在任何地方找到答案,我错过了什么?
好吧,我已经习惯了旧的C断言,当它们失败时,它们会输出它们失败的条件,以及它所在的线路.(与预处理器一起使用).
现在我用F#编程(一种.net语言),代码充满了断言.(尝试防御性地编程).我的资产显示了一个带调用堆栈的弹出窗口.根据文档,也可以传递断言字符串,以便在失败时显示.所以我可以通过我的条件的字符串副本.例如:
assert (x=true, "x=true")
Run Code Online (Sandbox Code Playgroud)
但这违反了复制(避免)委托人.
如果我后来决定改变我想要断言的东西.(也许我意识到当我应该断言它是真的时我声称某些东西是假的)然后我必须在两个地方更改代码,否则消息将与我实际检查的内容不匹配.如果我忘记了事情可能会让人感到困惑.
这通常是如何处理的?
因此,我在调试Netbeans Java应用程序时注意到在断言函数中使用函数调用时,您无法在该函数中触发断点或进入该函数.
起初我认为它必须与使用重写函数和我被覆盖的函数没有被调用有关,但我确认这不是正在发生的事情.它仍然被调用,但无法进入.
这是我尝试过的片段:
public class Example
{
public static boolean blah()
{
System.out.println("Executing"); //**Breakpoint here
return true;
}
public static void main(String[] args)
{
assert(blah()); //Cannot step into or hit breakpoint on this line.
blah(); //Can here.
}
}
Run Code Online (Sandbox Code Playgroud)
任何人都有任何想法为什么这不起作用?
我有以下类返回字符串列表.
public static String[] parseLinks(String text) {
String[] result = new String[] {"",""};
return result;
}
Run Code Online (Sandbox Code Playgroud)
但是当我对结果做一个assertEquals时,
assertEquals(new String[]{"",""}, parseLinks(""));
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
Exception in thread "main" junit.framework.AssertionFailedError: expected: <[Ljava.lang.String;@2352544e> but was:<[Ljava.lang.String;@721cdeff>
at junit.framework.Assert.fail(Assert.java:57)
at junit.framework.Assert.failNotEquals(Assert.java:329)
at junit.framework.Assert.assertEquals(Assert.java:78)
at junit.framework.Assert.assertEquals(Assert.java:86)
at junit.framework.TestCase.assertEquals(TestCase.java:253)
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?如果我必须提供任何其他信息,请与我们联系.
def test_string_membership():
assert False == 'c' in 'apple'
assert True == 'a' in 'apple'
assert True == 'app' in 'apple'
Run Code Online (Sandbox Code Playgroud)
ps: - 我是python的初学者,无法找出错误.当我运行代码时,我的断言失败了.
Qt的QML语言是否提供任何类型的"严格"模式?特别是,我喜欢有两个功能:
undefined或null(例如,foo = bar何时foo是现有属性但bar未定义,foo.bar何时foo为null)console.assert功能不会使应用程序崩溃).看这个:
>>> eval("assert(True)")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 1
assert(True)
^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
评估像这样的其他功能工作正常:
>>> eval("str(5)")
'5'
Run Code Online (Sandbox Code Playgroud)
那么为什么evaling断言失败?
在C中,断言可以通过定义消失NDEBUG,因此我们倾向于编写如下内容:
const bool ok = my_function();
assert(ok);
Run Code Online (Sandbox Code Playgroud)
但是,看起来Rust中的断言始终存在于每种类型的构建中,无论配置如何,因此更好的方法是:
let ok = my_function();
assert!(ok);
Run Code Online (Sandbox Code Playgroud)
要么:
assert!(my_function());
Run Code Online (Sandbox Code Playgroud)