问题标签 [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.

0 投票
4 回答
1301 浏览

r - 警告而不是来自 assert_that() 的错误?

我正在使用 R 的 assertthat 包,并且希望(暂时)在断言失败时输出警告而不是错误。使用 assertthat 包最简单的方法是什么?

我意识到想要警告而不是错误有点违背断言的用途。从长远来看,我们确实希望在断言失败时输出错误。在短期内,我们仍然希望代码即使在输入错误的情况下也能正常工作,因为输入错误的输出现在仍然“足够好”。

一个简单的例子:假设我有一个将 x 作为输入并输出 x+5 的函数。如果 x!=3,我想输出警告。由于我们最终将使用 assert_that,因此如果我们可以使用 assertthat 包来发出警告,那就太好了。

从长远来看,我们将使用这个:

在短期内,这是我迄今为止最好的:

如果可能的话,我正在寻找一个更简洁的解决方案(最好的情况是将“output_warning”参数传递给assert_that,但我认为不存在)。

0 投票
2 回答
777 浏览

java - 如何将 Hamcrest 的 AssertThat 用于 String[]

所以我一直在环顾四周,试图找到解决这个问题的方法,但我遇到了编译器错误或奇怪的期望,或者两者兼而有之。所以我们开始:

所以这段代码编译得很好,但是当我在 Maven 中构建它时,测试失败了,因为:Expected: hasProperty("John"), got:[John]

所以我做了一些查看并检查了人们在这里回答的其他问题,但我得到了编译错误,我显然做错了 assertThat 但应该如何设置 assertThat?

0 投票
2 回答
330 浏览

java - 如何使 JUnit assertThat() 与下界通配符一起使用?

最初,我有这段生产代码:

我测试了实现该接口的类,如下所示:

然后我认为将生产界面更改为:

(允许我返回 Action 的子类列表)。

但现在日食告诉我:

我想:当我更改实现 ActionInterface的类时

(而不是保留通配符)......然后一切正常。但为什么?

0 投票
1 回答
1772 浏览

java - 如何使用 AssertThat 检查列表中对象的属性值?

我将使用 asserThat 来验证 ArrayList 中对象的属性。

如果没有一个对象包含要测试的数据,我可以使用 assertThat,但如果只有一个对象包含要测试的数据,我无法弄清楚如何使用 assertThat。

示例代码:

0 投票
2 回答
7758 浏览

java - 如何使用 isA-Matcher

我有某种方法可以提供Restriction-object(Restriction接口在哪里)。而且由于它的实现已经是 testet,我只想测试我的方法是否真的提供了一个RestrictionImpl-object。
我看到有可以一起使用的匹配器,assertThat我想,isA-matcher 是这个任务需要的东西。

简化我的代码如下所示:

我的测试看起来像这样;

但是,这不会编译。我所能做的就是测试,如果 aRestrictionImplRestriction......但这样做没有意义。

我对目的有误解isA吗?它的真正含义是什么?

更新:
使用assertThat(getRestriction(), is(instanceOf(RestrictionImpl.class)))会起作用,但我认为这isA正是这样做的捷径。以我想要的方式
调用需要它有签名,但它的签名是assertThatassertThat(T, Matcher<? extends T>)assertThat(T, Matcher<? super T>)

0 投票
2 回答
25741 浏览

java - 当 JUnit 5 没有 assertThat() 函数时,如何将 Hamcrest 与 JUnit 5 一起使用?

要将 Hamcrest 与 JUnit 4 一起使用,我们使用一个assertThat()函数。但是,JUnit 5 将不再具有assertThat()功能。如何在没有 的情况下使用 Hamcrest assertThat()

0 投票
0 回答
46 浏览

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 函数?

非常感谢,西尔克

这是我的最小工作示例:

0 投票
1 回答
145 浏览

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,它就会通过。我的要求是在单个实例上应用这两项检查。

请帮忙。

0 投票
0 回答
313 浏览

junit - 包含某些特定字符串但具有字符串列表的集合

我已经实现了这个方法:

然后我有一个测试试图找到与“avocode”的任何匹配:

我导入的库:

++ 我的依赖项:

我希望测试能够成功运行,尽管我得到:

java.lang.AssertionError:
预期:包含“Avocode”的集合

但是:是“Avocode \”ready to eat\“DUO pack”,是“Avocode Hass”,是“Avocode Fuerte”,是“Avocode Bacon”

我相信我已经遵循堆栈溢出中的所有提示,但没有任何效果 - Avocode 在那里,所以它应该通过......

我将不胜感激(我是编程新手)。

谢谢,丽佳娜

0 投票
1 回答
49 浏览

r - 存储输入值以检查应用按合同设计时后置条件是否成立

assertthat我经常使用这个包来检查函数中的后置条件。在阅读有关按合同设计的想法的更多信息时,我偶然发现了将输出与输入值进行比较的想法。

最简单的例子如下:

人们可以立即声明这x == !old_x必须始终为真。(old_x代表x评估前的值。)

(当然这个例子过于简单了,后置条件并没有为人类或计算机添加更多有用的信息。一个更有用的例子在问题的底部..)

因此,我可以toggle按如下方式扩展我的函数,以便在每次调用时检查该条件:

这当然可行,但我想知道是否有另一种方法可以访问 的值,old_x而无需以新名称显式存储它(或结果)。并且无需将后置条件检查代码拆分到函数的顶部和底部。类似于 R 评估函数调用的方式。

我能想到的一种尝试是使用sys.calleval.parent访问旧值:

这可行,但我仍然需要分配一个新变量.x,而且子集[[2]]还不灵活。然而,像这样写是assertthat::assert_that(x == !eval.parent(as.list(sys.call())[[2]])行不通的,并且玩弄搜索级别sys.call(-1 ..)也无济于事。


后置条件添加一些信息的另一个(更有用的)示例:


有什么提示吗?