问题标签 [assertthat]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
r - 警告而不是来自 assert_that() 的错误?
我正在使用 R 的 assertthat 包,并且希望(暂时)在断言失败时输出警告而不是错误。使用 assertthat 包最简单的方法是什么?
我意识到想要警告而不是错误有点违背断言的用途。从长远来看,我们确实希望在断言失败时输出错误。在短期内,我们仍然希望代码即使在输入错误的情况下也能正常工作,因为输入错误的输出现在仍然“足够好”。
一个简单的例子:假设我有一个将 x 作为输入并输出 x+5 的函数。如果 x!=3,我想输出警告。由于我们最终将使用 assert_that,因此如果我们可以使用 assertthat 包来发出警告,那就太好了。
从长远来看,我们将使用这个:
在短期内,这是我迄今为止最好的:
如果可能的话,我正在寻找一个更简洁的解决方案(最好的情况是将“output_warning”参数传递给assert_that,但我认为不存在)。
java - 如何将 Hamcrest 的 AssertThat 用于 String[]
所以我一直在环顾四周,试图找到解决这个问题的方法,但我遇到了编译器错误或奇怪的期望,或者两者兼而有之。所以我们开始:
所以这段代码编译得很好,但是当我在 Maven 中构建它时,测试失败了,因为:Expected: hasProperty("John"), got:[John]
所以我做了一些查看并检查了人们在这里回答的其他问题,但我得到了编译错误,我显然做错了 assertThat 但应该如何设置 assertThat?
java - 如何使 JUnit assertThat() 与下界通配符一起使用?
最初,我有这段生产代码:
我测试了实现该接口的类,如下所示:
然后我认为将生产界面更改为:
(允许我返回 Action 的子类列表)。
但现在日食告诉我:
我想:当我更改实现 ActionInterface的类时
(而不是保留通配符)......然后一切正常。但为什么?
java - 如何使用 AssertThat 检查列表中对象的属性值?
我将使用 asserThat 来验证 ArrayList 中对象的属性。
如果没有一个对象包含要测试的数据,我可以使用 assertThat,但如果只有一个对象包含要测试的数据,我无法弄清楚如何使用 assertThat。
示例代码:
java - 如何使用 isA-Matcher
我有某种方法可以提供Restriction
-object(Restriction
接口在哪里)。而且由于它的实现已经是 testet,我只想测试我的方法是否真的提供了一个RestrictionImpl
-object。
我看到有可以一起使用的匹配器,assertThat
我想,isA
-matcher 是这个任务需要的东西。
简化我的代码如下所示:
我的测试看起来像这样;
但是,这不会编译。我所能做的就是测试,如果 aRestrictionImpl
是Restriction
......但这样做没有意义。
我对目的有误解isA
吗?它的真正含义是什么?
更新:
使用assertThat(getRestriction(), is(instanceOf(RestrictionImpl.class)))
会起作用,但我认为这isA
正是这样做的捷径。以我想要的方式
调用需要它有签名,但它的签名是assertThat
assertThat(T, Matcher<? extends T>)
assertThat(T, Matcher<? super T>)
java - 当 JUnit 5 没有 assertThat() 函数时,如何将 Hamcrest 与 JUnit 5 一起使用?
要将 Hamcrest 与 JUnit 4 一起使用,我们使用一个assertThat()
函数。但是,JUnit 5 将不再具有assertThat()
功能。如何在没有 的情况下使用 Hamcrest assertThat()
?
r - 在 R 中的 validate_that 中使用环境
我正在尝试编写自己的测试函数(test_if),它返回测试结果以及可选的错误消息。该函数基于 assertthat-package 中的 validate_that 函数。
test_if 函数似乎可以工作,但是,我还想在更具体的函数 (check_input) 中使用 test_if,以分析闪亮的用户输入。我有一个问题,如果我在 check_input 函数中定义 test_if 函数,check_input 函数才有效。
我想这个问题是由一些搜索范围或环境问题引起的。但是,我真的是 R 环境的新手。如何让我的 check_input-function 工作而不需要在其中定义 test_if 函数?
非常感谢,西尔克
这是我的最小工作示例:
java - Hamcrest 模式断言 2 自定义集合的属性
我有一个List<Employee>
带有两 (2) 个属性的 Java 自定义对象集合。它作为 Web 服务的响应接收。对象看起来像
我需要写一个断言来检查员工的名字是否是David那么它的指定必须是Manager。我这样试过
assertThat(employeeList, allOf(hasItem(hasProperty("name", equalTo("David")))
, hasItem(hasProperty("designation", equalTo("Manager")))));
但如果至少有一个 Manager 实例和一个 David,它就会通过。我的要求是在单个实例上应用这两项检查。
请帮忙。
junit - 包含某些特定字符串但具有字符串列表的集合
我已经实现了这个方法:
然后我有一个测试试图找到与“avocode”的任何匹配:
我导入的库:
++ 我的依赖项:
我希望测试能够成功运行,尽管我得到:
java.lang.AssertionError:
预期:包含“Avocode”的集合但是:是“Avocode \”ready to eat\“DUO pack”,是“Avocode Hass”,是“Avocode Fuerte”,是“Avocode Bacon”
我相信我已经遵循堆栈溢出中的所有提示,但没有任何效果 - Avocode 在那里,所以它应该通过......
我将不胜感激(我是编程新手)。
谢谢,丽佳娜
r - 存储输入值以检查应用按合同设计时后置条件是否成立
assertthat
我经常使用这个包来检查函数中的后置条件。在阅读有关按合同设计的想法的更多信息时,我偶然发现了将输出与输入值进行比较的想法。
最简单的例子如下:
人们可以立即声明这x == !old_x
必须始终为真。(old_x
代表x
评估前的值。)
(当然这个例子过于简单了,后置条件并没有为人类或计算机添加更多有用的信息。一个更有用的例子在问题的底部..)
因此,我可以toggle
按如下方式扩展我的函数,以便在每次调用时检查该条件:
这当然可行,但我想知道是否有另一种方法可以访问 的值,old_x
而无需以新名称显式存储它(或结果)。并且无需将后置条件检查代码拆分到函数的顶部和底部。类似于 R 评估函数调用的方式。
我能想到的一种尝试是使用sys.call
和eval.parent
访问旧值:
这可行,但我仍然需要分配一个新变量.x
,而且子集[[2]]
还不灵活。然而,像这样写是assertthat::assert_that(x == !eval.parent(as.list(sys.call())[[2]])
行不通的,并且玩弄搜索级别sys.call(-1 ..)
也无济于事。
后置条件添加一些信息的另一个(更有用的)示例:
有什么提示吗?