如何在不使用库的情况下进行单元测试?

时间:2010-12-01 13:51:23

标签: unit-testing testing

我从未写过单一的单元测试。但是自从我读到的每篇文章以来,他们都在谈论单元测试。我想我应该开始使用它。

但是怎么样?

有人能指出一个非常简单的单元测试hello world示例吗?不使用jUnit或类似的东西。

3 个答案:

答案 0 :(得分:3)

如果您不想使用任何其他库,那么您必须自己做很多工作。例如,假设您有一个具有一个要测试的函数的类:

class Foo {
    public int bar(int input);
}

您现在可以编写测试类:

class TestFoo {
    public void testBarPositive() {
        Foo foo = new Foo();
        System.out.println(foo.bar(5) == 7);
    }

    public void testBarNegative() {
        Foo foo = new Foo();
        System.out.println(foo.bar(-5) == -7);
    }

    public static void main(String[] args) {
        TestFoo t = new TestFoo();
        t.testBarPositive();
        t.testBarNegative();
    }
}

这是一个非常基本的例子,但它向您展示了如何编写自己的单元测试。

那就是说,我强烈建议使用像JUnit这样的库。它为您提供了大量免费,并删除了您自己必须编写的大量样板代码。它还可以生成漂亮的报告(当与Cobertura结合使用时)可以为您提供相当全面的测试结果。

答案 1 :(得分:1)

查看JUnit Cook's Tour

我建议使用JUnit(4.4或更高版本)或TestNG。

答案 2 :(得分:0)

我建议您使用其他库。听起来你想要做的就是构建自己的单元测试库。问题在于代码的任何基本问题,您可能遇到的任何逻辑错误,您在单元测试代码中也是如此,所以是的,您的单元通过了测试,但仅仅是因为它们做你期望他们做的事情,而不是因为他们实际上应该使用你所使用的任何语言的严格标准。

假设您编写了一个比较true / false并在PHP中返回0的函数(0 == false)= true但是(0 === false)= false如果您已为方案1编码但忽略了方案2,然后编写一个单元测试,测试方案1是否有效,但忽略方案2(如果你总是以这种方式编码,你可能会这样),然后你的单元测试会根据你定义的内容传递,但仍然是错误的。