标签: matcher

Mockito:列出具有泛型的Matchers

Mockito提供:

when(mock.process(Matchers.any(List.class)));
Run Code Online (Sandbox Code Playgroud)

如何避免警告,如果process需要List<Bar>呢?

java generics warnings matcher mockito

160
推荐指数
3
解决办法
11万
查看次数

Mockito匹配任何类参数

有没有办法匹配以下示例例程的任何类参数?

class A {
     public B method(Class<? extends A> a) {}
}
Run Code Online (Sandbox Code Playgroud)

无论传递哪个类,我怎么能总是返回?以下尝试仅适用于匹配的特定情况.new B()methodA

A a = new A();
B b = new B();
when(a.method(eq(A.class))).thenReturn(b);
Run Code Online (Sandbox Code Playgroud)

编辑:一个解决方案是

(Class<?>) any(Class.class)
Run Code Online (Sandbox Code Playgroud)

java arguments class matcher mockito

142
推荐指数
5
解决办法
23万
查看次数

java正则表达式匹配计数

假设我有一个文件,该文件包含:

HelloxxxHelloxxxHello
Run Code Online (Sandbox Code Playgroud)

我编译一个模式来寻找'你好'

Pattern pattern = Pattern.compile("Hello");
Run Code Online (Sandbox Code Playgroud)

然后我使用输入流来读取文件并将其转换为String,以便可以对其进行重新编码.

一旦匹配器在文件中找到匹配项,它就表明了这一点,但它没有告诉我它找到了多少匹配项; 只是它在String中找到了匹配项.

因此,由于字符串相对较短,并且我使用的缓冲区是200字节,因此它应该找到三个匹配项.但是,它只是简单地说匹配,并没有向我提供有多少匹配的计数.

计算String中发生的匹配数的最简单方法是什么.我已经尝试了各种for循环并使用matcher.groupCount(),但我无处可去.

java regex matcher find

87
推荐指数
3
解决办法
10万
查看次数

如何在ScalaTest中显示自定义失败消息?

有谁知道如何在ScalaTest中显示自定义失败消息?

例如:

NumberOfElements() should equal (5)
Run Code Online (Sandbox Code Playgroud)

失败时显示以下消息:

10不等于5

但我想要更多描述性的消息,如:

NumberOfElements应为5.

scala matcher scalatest

82
推荐指数
2
解决办法
1万
查看次数

PatternSyntaxException:在Java中使用正则表达式时非法重复

我不太了解正则表达式,但我需要匹配一个简单的模式.以下应该返回true,

Pattern.matches("{\"user_id\" : [0-9]*}", inputLine)
Run Code Online (Sandbox Code Playgroud)

当inputLine是

{"user_id" : 34}
Run Code Online (Sandbox Code Playgroud)

但是,我得到了这个例外:

java.util.regex.PatternSyntaxException: Illegal repetition
{"user_id" : 24}
    at java.util.regex.Pattern.error(Unknown Source)
    at java.util.regex.Pattern.closure(Unknown Source)
    at java.util.regex.Pattern.sequence(Unknown Source)
    at java.util.regex.Pattern.expr(Unknown Source)
    at java.util.regex.Pattern.compile(Unknown Source)
    at java.util.regex.Pattern.<init>(Unknown Source)
    at java.util.regex.Pattern.compile(Unknown Source)
    at java.util.regex.Pattern.matches(Unknown Source)
    at org.whispercomm.manes.server.http.IntegrationTest.createUser(IntegrationTest.java:173)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:30)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50) …
Run Code Online (Sandbox Code Playgroud)

java regex matcher

80
推荐指数
2
解决办法
7万
查看次数

使用Hamcrest获得多个正确结果(是否存在or-matcher?)

我对匹配者比较陌生.我正在和Hamcrest一起 JUnit并且我喜欢它.

有没有办法说明多种选择中的一种是正确的?

就像是

assertThat( result, is( either( 1, or( 2, or( 3 ) ) ) ) ) //does not work in hamcrest
Run Code Online (Sandbox Code Playgroud)

我正在测试的方法返回一个集合的一个元素.该列表可能包含多个候选人.我当前的实现返回第一个命中,但这不是必需的.如果返回任何可能的候选人,我希望我的测试用例成功.你会怎么用Java表达这个?

(我对hamcrest替代品持开放态度)

java junit hamcrest matcher

71
推荐指数
2
解决办法
3万
查看次数

RSpec:期望改变多个

我想在功能规范中提交表单时检查模型中的许多更改.例如,我想确保用户名从X更改为Y,并且加密密码已更改为任何值.

我知道已经有一些问题,但我找不到合适的答案.最准确的答案似乎ChangeMultiple是迈克尔约翰斯顿的匹配器:RSpec有可能期望两个表的变化吗?.它的缺点是只检查从已知值到已知值的显式变化.

我创建了一些关于我认为更好的匹配器看起来如何的伪代码:

expect {
  click_button 'Save'
}.to change_multiple { @user.reload }.with_expectations(
  name:               {from: 'donald', to: 'gustav'},
  updated_at:         {by: 4},
  great_field:        {by_at_leaset: 23},
  encrypted_password: true,  # Must change
  created_at:         false, # Must not change
  some_other_field:   nil    # Doesn't matter, but want to denote here that this field exists
)
Run Code Online (Sandbox Code Playgroud)

我还创建了ChangeMultiple匹配器的基本骨架,如下所示:

module RSpec
  module Matchers
    def change_multiple(receiver=nil, message=nil, &block)
      BuiltIn::ChangeMultiple.new(receiver, message, &block)
    end

    module BuiltIn
      class ChangeMultiple < Change
        def with_expectations(expectations)
          # What to do …
Run Code Online (Sandbox Code Playgroud)

rspec ruby-on-rails matcher

65
推荐指数
2
解决办法
2万
查看次数

为什么这段代码没有尝试使用Hamcrest的hasItems编译?

为什么这不编译,哦,该怎么办?

import static org.junit.Assert.assertThat;
import static org.junit.matchers.JUnitMatchers.hasItems;

ArrayList<Integer> actual = new ArrayList<Integer>();
ArrayList<Integer> expected = new ArrayList<Integer>();
actual.add(1);
expected.add(2);
assertThat(actual, hasItems(expected));
Run Code Online (Sandbox Code Playgroud)

从评论中复制的错误:

cannot find symbol method assertThat(java.util.ArrayList<java.lang.Integer>, org.hamcreset.Matcher<java.lang.Iterable<java.util.ArrayList<java.lang.Integer>>>)
Run Code Online (Sandbox Code Playgroud)

java junit unit-testing hamcrest matcher

55
推荐指数
3
解决办法
8万
查看次数

何时在JAVA中使用glob语法中的**(双星)

直接来自这个 Java Oracle教程:

两个星号**的作用类似于*但跨越目录边界.此语法通常用于匹配完整路径.

有人可以做一个真实的例子吗?他们对"十字架目录边界"有什么意义?穿过目录边界,我想象从root到文件检查getNameCount()-1.再来一个真实的例子解释在*和**的区别做法将是巨大的.

java nio glob path matcher

48
推荐指数
2
解决办法
4万
查看次数

如何编写一个不等于某事的匹配器

我正在尝试为通话创建一个模拟器.说我有这个方法我试图存根:

class ClassA {
  public String getString(String a) {
    return a + "hey";
  }
}
Run Code Online (Sandbox Code Playgroud)

我想嘲笑的是:第一个例子是

when(classA.getString(eq("a")).thenReturn(...);`
Run Code Online (Sandbox Code Playgroud)

在同一测试案例中

when(classA.getString([anything that is not a])).thenReturn(somethingelse);
Run Code Online (Sandbox Code Playgroud)

第二个案例是我的问题:我如何匹配anyString()"a"以外的其他?

java junit matcher mockito

45
推荐指数
3
解决办法
2万
查看次数