小编Ash*_*yan的帖子

在单元测试中使用反射测试注释的存在是否被视为良好实践?

(这篇文章解释了为什么我想要这样做:单元测试的好模式形成在Spring MVC中具有基于注释的验证的bean)

编写单元测试以仅测试字段或类的配置/注释是否是一种良好的做法?例如,如果你有:

@AnnotatedClass
public class MyClass {

@AnnotatedField1
@AnnotatedField2
private string myField;

}
Run Code Online (Sandbox Code Playgroud)

编写单元测试是否有任何意义,可以检查上面是否存在注释?

java reflection testng unit-testing annotations

5
推荐指数
1
解决办法
509
查看次数

JSR Bean 验证和多个组,AND 与 OR

有没有人遇到过需要有一个只有在满足所有组子句时才应用的约束。换句话说,对于

@NotNull(groups= {Group1.class, Group2.class})
private Integer value;
Run Code Online (Sandbox Code Playgroud)

当任一组有效时应用非空约束。

如果我想在两个组都有效时应用约束怎么办?

拥有自定义组不是一种选择,因为在我的应用程序中有许多此类组的组合。

java hibernate-validator jsr330 bean-validation

5
推荐指数
1
解决办法
2821
查看次数

在两个数字之间生成随机数

public class TestSample {
    public static void main(String[] args) { 

        int a = Integer.parseInt(args[0]);
        int b = Integer.parseInt(args[1]);

        double ran = Math.random();



    }
}
Run Code Online (Sandbox Code Playgroud)

我不想Random r = new Random();上课.有没有其他方法来生成随机数.我很惊讶可以应用什么逻辑来生成两个数字之间的随机数.

java random algorithm

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

使用JavaScript和JQuery数据表缓冲/延迟ajax请求/击键

我目前正在为一个企业网络应用程序进行原型设计,其中包括一个快速搜索屏幕.此屏幕使用JQuery和Datatables提供搜索结果的表格视图.基于与在文本字段中输入的字符串的匹配来执行搜索.每次按下一个键时,都会将一个新的AJAX请求发送回servlet,执行搜索(跨大型数据库),并通过JSON返回结果以在表上更新.

对数据库的搜索是一项代价高昂的操作.很多时候,当用户输入一个名字时,他们会快速连续输入一些字母.这将导致在后端触发多次搜索,有时不必要.

我想知道是否有一种巧妙缓冲这些请求的方法.例如,如果用户正在键入"Jonathan",请不要发送对J,Jo,Jona,Jonath等的请求,如果它们都是在彼此的时间限制内输入,并且仅在有时请发送请求打字时有足够的空隙,即输入结尾处的字母n时.

我知道这会花费一点点延迟,但这可能是值得妥协的.

你认为这有道理吗?是否存在此类操作的现有模式/库?它是否会导致我没有想到的可用性问题?

非常感谢您的意见!

javascript ajax jquery datatables httprequest

3
推荐指数
1
解决办法
1837
查看次数

阵列改组不起作用

我正在尝试编写代码以在不使用集合的情况下对数组进行混洗.

我的洗牌代码

金额

private double amounts[] = { 0, 0.01, 1000000, 25, 250000, 75, 50, 1000,
            200, 100, 400000, 750, 5000, 750000, 500, 100000, 300, 75000, 800,
            20, 300000, 10, 50, 750, 25, 5, 1 };

public void Shuffle(){

        Random rgen = new Random();
        for (int i=0; i > amounts.length; i++) {
            int randomPosition = rgen.nextInt(amounts.length);
            double temp = amounts[i];
            amounts[i] = amounts[randomPosition];
            amounts[randomPosition] = temp;
    }
    }
Run Code Online (Sandbox Code Playgroud)

启动它的代码

public void casesSetup() {  

        for (int i = 0; i < …
Run Code Online (Sandbox Code Playgroud)

java arrays random algorithm shuffle

3
推荐指数
1
解决办法
431
查看次数

java中的通用集合和通配符

在下列情况下,我遇到问题,请查看下面的内联评论:

public void exampleMethod() {
    //Intuitively I would expect this to mean that test is set containing objects 
    //that subclass AbstractGroup
    Set<? extends AbstractGroup> test;

    //Yet the compiler complains here and I do not understand why?

    test.add(new AnyAbstractGroupSubGroup());

    //I would guess that a method call such as this at runtime

    test = new HashSet<SubGroupA>()

    //would mean that only objects of subgroupA can be added to the collection, but then
    //what is the point in using the wildcard in the first …
Run Code Online (Sandbox Code Playgroud)

java generics collections wildcard

3
推荐指数
1
解决办法
2609
查看次数

为什么我的JFrame不显示?

我正试图在一个有81个盒子的窗口中显示一个解决的数独拼图.我这样做了:

import java.awt.GridLayout;
import java.awt.*;

import javax.swing.JFrame;
import javax.swing.JLabel;


public class GraphicSolver extends JFrame {

GraphicSolver(int[][] spelplan) {

    Panel panel = new Panel(new GridLayout(9,9));

    for(int i=9;i<9;i++){
        for(int x=0;x<9;x++){
            panel.add(new JLabel(""+spelplan[i][x]));
        }
    }

    Frame frame = new Frame();
    frame.add(panel);


    frame.setVisible(true);

}
}
Run Code Online (Sandbox Code Playgroud)

但是,它只给了我一个没有任何数字的空窗口.如果有人能指出我正确的方向,我会很高兴.

java swing jframe

3
推荐指数
1
解决办法
2450
查看次数

在没有静态测试数据库的情况下,如何使DAO类的单元测试不那么脆弱?

这是scanario:

我正在研究一个DAO对象,它使用hibernate标准API来形成一些复杂的查询来执行数据库上的某些任务(例如,跨多个字段的关键字搜索).

我们需要对此进行单元测试,以确保生成的查询对于各种场景都是正确的.测试它的一种方法 - 可能更好 - 将通过最后检查并模拟数据库交互来测试hibernate标准是否正确创建.然而,这是不可取的,因为它首先是有点作弊(它只是复制了代码将要做的事情),而且它也不会检查标准本身是否会导致休眠到barf,或者当它进入数据库时​​它会导致问题.

然后,使用选项对测试数据库运行查询.但是,由于历史原因,没有静态测试数据库(例如,代码作为代码的一部分签入的代码),并且我的项目的职权范围不允许我开始创建一个,我们必须满足于对共享开发数据库,​​定期使用生产数据刷新.

当这些刷新发生时,测试背后的数据也会发生变化,这将使我们的单元测试变得脆弱.我们可以通过在测试中不使用确切的数字来克服它,但这并不是真正适合测试的方式.

那么问题是:人们在这样的情况下做些什么来使测试变得不那么脆弱?我想到的一个选项是运行一个执行相同查询的本机SQL(行为 - 它不必与hibernate生成的查询完全相同)来获取预期的数字,然后运行DAO版本以查看如果它匹配.这样,查询的行为总是可以在初始本机SQL中实现,并且您将始终拥有正确的数字.

关于如何管理这种情况的这个或其他想法的任何反馈将不胜感激.

一个.

更新:

关于hsqldb/h2/derby的建议,我对它们很熟悉,但该公司尚未准备好沿着这条路走下去,只在一个测试用例上零碎地做它将不合适.

关于我之前的建议,我想详细说明一下 - 考虑这种情况:

我想确保我的相对复杂的关键字搜索返回"John Smith"的2100个匹配项.

为了找到预期的数字,我会分析我的数据库,并使用SQL查询找出数字.将该查询作为测试的一部分有什么缺点,以便您始终知道您正在测试标准的行为?

基本上问题是:如果由于某种原因你没有静态数据集进行测试,你将如何以非脆弱的方式执行集成测试?

java junit dbunit unit-testing hibernate

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

使用椭圆曲线加密验证签名

我需要验证包含多个值的消息的签名.我唯一的参数是签名,公钥和值本身.用于创建签名的算法是具有192位的椭圆曲线密码术.我已经尝试在网上找到代码示例,但我没有找到任何针对此案例的内容.

有没有人使用java验证这个算法?您能否提供代码或示例链接?

谢谢您的帮助!

java security jce digital-signature elliptic-curve

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

挣扎着膨胀算法

即使在阅读RFC并查看c和javascript实现之后,我也很难理解inflate算法的工作原理.我使用文本"TestingTesting"压缩了一个文件,并以十六进制获得了以下结果:0B 49 2D 2E C9 CC 4B 0F 81 50 00

我尝试在16位和32位字节序交换后读取数据,但在读取前3位后我无法再进一步,因为接下来的5位没有意义.我做错了什么,如何解析?

我使用过的参考资料:RFC 1951 Javascript C.

javascript algorithm inflate

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

使用void方法和对象数组作为参数的EasyMock Expectation?

使用EasyMock设置void方法的期望时,是否可以将Object数组指定为方法的参数之一?

例如,如果我们有这样的事情:

Errors mockErrors = createMock(Errors.class);
...
mockErrors.rejectValue(Object[]{"5", "2"});
mockErrors.replay();

classUnderTest.someMethod();
Run Code Online (Sandbox Code Playgroud)

在ClassUnderTest中,someMethod调用rejectValue(Object [] {"5","2"});

然而,尽管期望被设置为正在调用的内容,但是easy mock会抱怨意外的方法调用.

>     Unexpected method call rejectValue(["5", "2"]):
>         rejectValue(["5", "2"]): expected: 1, actual: 0
Run Code Online (Sandbox Code Playgroud)

我认为这是因为在引擎盖下它依赖于Object []上的equals方法,并且由于两者不同,它返回false并且不满足条件.

有办法解决吗?因为我没有使用expect()设置期望我可以使用any()...有没有办法在void方法上做同样的事情?

java testng unit-testing easymock mocking

0
推荐指数
1
解决办法
2441
查看次数