小编Dav*_*ess的帖子

忽略EclEmma中单元测试的代码覆盖率

我已经配置EclEmma不要检测我的单元测试工作正常.但是,编辑器仍然强调测试代码未涵盖.我不希望在单元测试中突出显示,因为它们没有检测到覆盖范围.我怎样才能做到这一点?

java eclipse code-coverage eclemma

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

调用在没有前缀的另一个命名空间中定义的PHP函数

在命名空间中定义函数时,

namespace foo {
    function bar() { echo "foo!\n"; }
    class MyClass { }
}
Run Code Online (Sandbox Code Playgroud)

从另一个(或全局)命名空间调用时,必须指定命名空间:

bar();          // call to undefined function \bar()
foo\bar();      // ok
Run Code Online (Sandbox Code Playgroud)

对于类,您可以使用"use"语句将类有效地导入当前命名空间[编辑:我认为您可以"使用foo"来获取类,但显然不是.]

use foo\MyClass as MyClass;
new MyClass();  // ok, instantiates foo\MyClass
Run Code Online (Sandbox Code Playgroud)

但这不适用于函数[并且考虑到有多少函数会很笨拙]:

use foo\bar as bar;
bar();          // call to undefined function \bar()
Run Code Online (Sandbox Code Playgroud)

您可以对命名空间进行别名以使前缀更短以进行输入,

use foo as f;   // more useful if "foo" were much longer or nested
f\bar();        // ok
Run Code Online (Sandbox Code Playgroud)

但有没有办法完全删除前缀?

背景:我正在研究Hamcrest匹配库,它定义了许多工厂函数,其中许多都是为嵌套而设计的.拥有名称空间前缀确实会破坏表达式的可读性.相比

assertThat($names, 
    is(anArray(
        equalTo('Alice'), 
        startsWith('Bob'), 
        anything(), 
        hasLength(atLeast(12))
    )));
Run Code Online (Sandbox Code Playgroud)

use Hamcrest as …
Run Code Online (Sandbox Code Playgroud)

php namespaces function

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

将ArrayList <Subclass>传递给使用List <Superclass>声明的方法

我有一个方法,其中包含一个包含泛型的参数.

public static void readList(List<ModelObject> list)
{
    // more code
}
Run Code Online (Sandbox Code Playgroud)

我想一个传递ArrayListModelObjectImplementations到这种方法.

ArrayList<ModelObjectImplementation> myList;
myList = ...

readList(myList); // gives compilation error
Run Code Online (Sandbox Code Playgroud)

ModelObject是一个ModelObjectImplementation实现的接口.如何更改方法声明以允许此操作?

java generics

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

在正在测试的同一个类中模拟一个方法

我想在我正在测试的同一个类中模拟一个方法.

ClassA {
   function hardToTest($arg) {
      // difficult to test code
   }

   function underTest() {
      return $this->hardToTest('foo');
   }
}
Run Code Online (Sandbox Code Playgroud)

我以为我可以用反射来做这件事,但也许这只是我应该hardToTest进入另一个对象的一个标志.

php phpunit unit-testing mocking

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

github支持precommithooks吗?

目前我们正在使用SVN.我想开始使用GitHub,但一个绝对要求是我们需要像我们现在一样对代码进行预先(premerge)验证.GitHub是否支持precommithooks(premergehooks)?

我们是一个由5名开发人员组成的团队.我们达成了一个协议,所有代码(JavaScript)都应该通过类似JSLint的验证.事实证明,自愿验证不起作用,因为它很容易被遗忘.我们怎样才能确保其他人可用的代码能够保证对JSLint(或类似的)进行验证?

github pre-commit-hook

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

为什么jQuery不提供.firstChild方法?

我已经看到很多关于使用jQuery选择第一个子元素的最快方法的讨论.可以预料,本机DOM firstChild属性比使用jQuery选择器或选择器组合快得多 - 请参阅http://jsperf.com/jquery-first-child-selection-performance/6.这通常不是问题 - 要么在性能不是很大的地方使用,要么只是访问DOM元素并使用其.firstChild属性就足够了.但是,这有几个问题:

  • firstChild可以返回一个文本或注释节点,而不是一个元素,因为jQuery选择器会返回
  • 如果我需要选择多个元素的第一个子元素,我必须使用慢速选择器,或者进行大量额外的工作迭代DOM元素,将它们添加到集合中,然后将它们放回到jQuery对象中.

在我看来,将firstChild方法添加到核心jQuery库的成本远远小于其好处.我自己动手创建了一个供自己使用的方法:

$.fn.firstChild = function() {
    var ret = [];

    this.each(function() {
        var el = this.firstChild;

        //the DOM firstChild property could return a text node or comment instead of an element
        while (el && el.nodeType != 1)
            el = el.nextSibling;

        if (el) ret.push(el);
    });

    //maintain jQuery chaining and end() functionality
    return this.pushStack(ret);
};
Run Code Online (Sandbox Code Playgroud)

在我在http://jsperf.com/jquery-multiple-first-child-selection创建的测试中,此函数的执行速度比任何其他选项快五倍.测试基于上面提到的测试,但是选择多个元素的第一个子元素,而不是单个元素.

有什么我想念的吗?我应该使用的技术?或者这是一个不应该担心的问题?有没有理由不在jQuery中包含这样的函数?

performance jquery jquery-selectors

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

无法在PHPUnit中使用数据提供程序运行单个测试

使用命令行运行测试时遇到问题:如果我像这样运行phpunit:

phpunit -–no-configuration -–filter testAdd DataTest DataProviderTest.php
Run Code Online (Sandbox Code Playgroud)

它工作正常.但是我们使用正则表达式来指定我们想要测试的方法的名称:

phpunit -–no-configuration -–filter /::testAdd$/ DataTest DataProviderTest.php
Run Code Online (Sandbox Code Playgroud)

不幸的是,第二种方法不起作用.源代码是:

<?php
class DataTest extends PHPUnit_Framework_TestCase
{
    /**
     * @dataProvider provider
     */
    public function testAdd($a, $b, $c)
    {
        $this->assertEquals($c, $a + $b);
    }

    public function provider()
    {
        return array(
          array(0, 0, 0),
          array(0, 1, 1),
          array(1, 0, 1),
          array(1, 1, 3)
        );
    }
}

?>
Run Code Online (Sandbox Code Playgroud)

php phpunit

14
推荐指数
3
解决办法
4221
查看次数

移动源代码文件的SVN合并

我觉得我拥有SVN世界上最简单的用例:

  • 我有一个文件,Test.javatrunkSVN的.
  • 我分支trunkdev-branch.
  • Test.java进入了com/mycompany文件夹trunk.
  • 我改变Test.javadev-branch.
  • 我合并dev-branchtrunk.
  • 树冲突结果.

为什么,为什么,SVN不能处理这个?我们做错了吗?这感觉应该很容易,但我公司的每个工程师都受到了阻碍.

在这里寻找面向SVN的答案(不是'移动到git'等).

svn merge

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

获取访问者的优化A/B测试和变体

当我在我的网站上进行实验时,我希望能够找出当前访问者看到的测试和变体.我无法从Optimizely Javascript API中找到如何执行此操作.

javascript api optimizely

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

如何在PHP中获取字符串中的最后一个数字?

我怎样才能获得23的,而不是1$lastnum1

$text = "1 out of 23";
$lastnum1 = $this->getEval(eregi_replace("[^* out of]", '', $text));
Run Code Online (Sandbox Code Playgroud)

php regex

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