标签: testing


是否有类似dbunit的框架,它不会吸引java/scala?

我正在考虑建立一个新的,轻量级的数据库人口框架.我绝对讨厌dbunit.在我做之前,我想知道是否有人已经这样做了.

我不喜欢dbunit的事情:

1)不推荐使用最简单的编写和入门格式.他们希望您使用膨胀的格式.有些甚至需要xml架构.好吧,无所谓了.

2)它们不按您编写的顺序填充行,但是在顺序表中是在xml文件中定义的.这非常糟糕,因为您无法以外键约束不会导致问题的方式对数据进行排序.这只会迫使你彻底解决它们的麻烦.

这也会浪费时间并使你的junit基类膨胀,以包含禁用外键约束的代码.您可能必须测试数据库类型(hsqldb等)并以特定于数据库的方式禁用它们.这很糟糕.

如果dbunit有助于自动禁用外键约束作为其框架的一部分,但它们不会这样做.他们确实跟踪方言......所以为什么不使用它们呢?最终,所有这一切都迫使程序员浪费时间而不是快速起床和测试.

3)XML是一种痛苦的写作.我不需要多说这个.他们也提供了很多方法,我认为这只会使问题复杂化.只需提供一个非常可靠的方法并完成它.

4)当你的数据变大时,跟踪id及其一致/正确的关系是一种巨大的痛苦.

另外,如果你没有在一个月的项目上工作,你怎么记得user_id 1是管理员,user_id 2是业务用户,user_id 3是工程师而user_id 4是其他什么?回去检查这是浪费更多时间.除了任意数字之外,应该有一种有意义的方法来检索它.

5)这很慢.我发现除非使用hsqldb,否则它会非常缓慢.它不一定是.还有很多方法可以搞乱其配置,因为"开箱即用"并不容易.有一个驼峰,你必须通过它来使其正常工作.所有这一切都鼓励人们不要使用它,或者在他们开始使用它时感到生气.

6)有些值往往会重复很多,比如日期.指定默认值,甚至让框架自动设置默认值是很好的,即使没有告诉它将默认值放在那里.这样,您可以使用所需的值创建对象,并将其余部分保留.如果不需要,这肯定会指定列的每个角落和裂缝.

7)最令人烦恼的可能是第一个条目必须包含所有值 - 甚至是空占位符 - 或者将来的行不会选择您实际指定的列.

DBunit没有将[NULL]转换为实际空值的合理默认值.您必须手动添加它.告诉我,谁没有用dbunit做到这一点?每个人都有.它应该不是这样的!

这意味着如果你有一个多态对象,你必须声明第一行中每个子类的连接表的所有外键,即使它们是null.如果为所有子类模式执行表,则仍必须指定第一行上的所有字段.这太可怕了.

有什么东西可以满足我,或者我应该成为更好的数据库测试框架的下一个框架开发人员?

java database testing dbunit scala

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

Jasmine - 在构造函数中监视方法调用

我想测试在我的Javascript对象构造函数中是否调用以下方法.从我在Jasmine文档中看到的,我可以窥探一个构造函数方法,并且我可以在实例化对象之后监视方法,但是在构造对象之前我似乎无法监视方法.

物体:

Klass = function() {
    this.called_method();
};

Klass.prototype.called_method = function() {
  //method to be called in the constructor.
}
Run Code Online (Sandbox Code Playgroud)

我想在规范中做这样的事情:

it('should spy on a method call within the constructor', function() {
    spyOn(window, 'Klass');
    var obj = new Klass();
    expect(window.Klass.called_method).toHaveBeenCalled();
});
Run Code Online (Sandbox Code Playgroud)

javascript testing spy jasmine

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

测试没有预期的异常

我想创建NUnit测试以确保我的函数不会抛出异常.是否有一些特定的方法来做,或者我应该写

[Test]
public void noExceptionTest() {
  testedFunction();
}
Run Code Online (Sandbox Code Playgroud)

如果没有抛出异常,它会成功吗?

.net c# testing nunit unit-testing

61
推荐指数
3
解决办法
4万
查看次数

用Mockito调用回调

我有一些代码

service.doAction(request, Callback<Response> callback);
Run Code Online (Sandbox Code Playgroud)

如何使用Mockito获取回调对象,并调用callback.reply(x)

java testing mockito

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

选择静态代码分析工具

我正在开发一个项目,我在UNIX环境中用C编码.我一直在使用lint工具来检查我的源代码.Lint已经存在了很长时间(自1979年以来),任何人都可以建议我可以使用更新的代码分析工具吗?优选地是免费的工具.

c unix testing

60
推荐指数
6
解决办法
5万
查看次数

jquery(或纯js)模拟按下输入键进行测试

模拟用户按"输入"的最佳方法是什么?$(element).keypress()似乎不允许我传入按下的实际键.

这是用于单元测试.

javascript testing jquery mocking

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

最终方法嘲笑

我需要使用mockito使用final方法模拟一些类.我写过这样的东西

@Test
public void test() {
    B b = mock(B.class);
    doReturn("bar called").when(b).bar();   
    assertEquals("must be \"overrided\"", "bar called", b.bar());
    //bla-bla
}


class B {
    public final String bar() {
        return "fail";
    }
}
Run Code Online (Sandbox Code Playgroud)

但它失败了.我尝试了一些"黑客",它的确有效.

   @Test
   public void hackTest() {
        class NewB extends B {
            public String barForTest() {
                return bar();
            }
        }
        NewB b = mock(NewB.class);
        doReturn("bar called").when(b).barForTest();
        assertEquals("must be \"overrided\"", "bar called", b.barForTest());
    }
Run Code Online (Sandbox Code Playgroud)

它有效,但"闻起来".

那么,正确的方式在哪里?

谢谢.

java testing unit-testing mocking mockito

60
推荐指数
5
解决办法
6万
查看次数

60
推荐指数
3
解决办法
9万
查看次数

单元测试使用请求库的python应用程序

我正在编写一个使用Kenneth Reitz的请求库执行REST操作的应用程序,我正在努力寻找一种单独测试这些应用程序的好方法,因为请求通过模块级方法提供其方法.

我想要的是能够综合双方之间的对话; 提供一系列请求断言和响应.

python testing unit-testing mocking python-requests

60
推荐指数
3
解决办法
4万
查看次数