小编Kar*_*rle的帖子

Mockito - 拦截模拟上的任何方法调用

是否有可能以通用方式拦截模拟上的所有方法调用?

给定供应商提供的类如:

public class VendorObject {

    public int someIntMethod() {
        // ...
    }

    public String someStringMethod() {
        // ...
    }

}
Run Code Online (Sandbox Code Playgroud)

我想创建一个模拟,将所有方法调用重定向到另一个具有匹配方法签名的类:

public class RedirectedToObject {

    public int someIntMethod() {
        // Accepts re-direct
    }

}
Run Code Online (Sandbox Code Playgroud)

Mockito中的when().thenAnswer()构造似乎符合要求,但我无法找到一种方法来匹配任何方法调用与任何args.无论如何,InvocationOnMock肯定会给我所有这些细节.有没有通用的方法来做到这一点?看起来像这样的东西,其中when(vo.*)被适当的代码替换:

VendorObject vo = mock(VendorObject.class);
when(vo.anyMethod(anyArgs)).thenAnswer(
    new Answer() {
        @Override
        public Object answer(InvocationOnMock invocation) {

            // 1. Check if method exists on RedirectToObject.
            // 2a. If it does, call the method with the args and return the result.
            // 2b. If it …
Run Code Online (Sandbox Code Playgroud)

java unit-testing mockito

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

使用JAXB提取XML元素的内部文本

问题

给定以下XML配置文件:

<main>
  <name>JET</name>
  <maxInstances>5</maxInstances>
  <parameters>
    <a>1</a>
    <b>
      <b1>test1</b1>
      <b2>test2</b2>
    </b>
  </parameters>
</main>
Run Code Online (Sandbox Code Playgroud)

我需要提取name和maxInstances元素的值,然后提取参数元素的整个内部文本.例如

name = "JET"
maxInstances = 5
parameters = "<a>1</a><b><b1>test1</b1><b2>test2</b2></b>"
Run Code Online (Sandbox Code Playgroud)

最终,参数块可以包含任何格式良好的XML.

试图解决方案

以下代码适用于name和maxInstances,但不适用于参数:

@XmlRootElement(name="main")
public class Main {

    @XmlElement(name="name", required="true")
    private String name;

    @XmlElement(name="maxInstances", required="true")
    private Integer maxInstances;

    @XmlElement(name="parameters")
    private String parameters;

}
Run Code Online (Sandbox Code Playgroud)

我已经尝试过基于以下想法的解决方案,但找不到合适的东西.

我可以使用不同的类型来表示我可以解析以生成字符串的XML树的参数对象吗?例如

@XmlElement(name="parameters")
private XmlNodeObject parametersNode;

public String getParameters() {
    // Collapse node to single line of text
    return innerText;
}
Run Code Online (Sandbox Code Playgroud)

或者我需要使用一些不同类型的注释?

@XmlSpecialAnnotation(...)
@XmlElement(name="parameters")
private String parameters;
Run Code Online (Sandbox Code Playgroud)

我是否需要切换到不同风格的解析器?使用两种样式的解析器是好/坏的想法?

xml jaxb innertext

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

在Java和C#中计算SHA-1哈希值

在Java和C#中计算SHA-1哈希值

我正在尝试在C#应用程序中复制Java应用程序的逻辑.部分原因是生成密码的SHA-1哈希.不幸的是,我无法从Java和C#获得相同的结果.

C# Output  : 64  0a  b2 ba e0 7b  ed c4 c1 63  f6 79  a7 46  f7 ab 7f  b5 d1 fa
Java Output: 164 10a b2 ba e0 17b ed c4 c1 163 f6 179 a7 146 f7 ab 17f b5 d1 fa 

为了弄清楚发生了什么,我一直在Eclipse和Visual Studio中使用Debugger.

1. Check values of byte[] key:

    Java: { 84, 101, 115, 116 }
    C#  : { 84, 101, 115, 116 }

2. Check value of byte[] hash:

    Java: { 100 10 …

c# java hash sha1

8
推荐指数
1
解决办法
8989
查看次数

标签 统计

java ×2

c# ×1

hash ×1

innertext ×1

jaxb ×1

mockito ×1

sha1 ×1

unit-testing ×1

xml ×1