我从来没有写过一个单元测试。但是自从我读过的每篇文章,他们都在谈论单元测试。我想我应该开始使用它。如何在不使用库的情况下进行单元测试?
但是如何?
有人能指点我一个非常简单的单元测试你好世界的例子吗?没有使用jUnit或类似的东西。
我从来没有写过一个单元测试。但是自从我读过的每篇文章,他们都在谈论单元测试。我想我应该开始使用它。如何在不使用库的情况下进行单元测试?
但是如何?
有人能指点我一个非常简单的单元测试你好世界的例子吗?没有使用jUnit或类似的东西。
如果你不想使用任何其他库,那么你必须自己做很多工作。例如,假设你有要测试一个函数的类:
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相结合时)可以为您提供一个相当全面的测试结果。
我推荐JUnit(版本4.4或更高版本)或TestNG。
我会推荐你使用其他一些库。这听起来像你想要做的是建立你自己的单元测试库。问题在于代码的任何基本问题,您可能会犯的任何逻辑错误,您也可能在您的单元测试代码中进行测试,因此,您的单元通过测试,但仅仅是因为它们做你期望他们做的事情,而不是因为他们实际上应该用你使用的任何语言的严格标准来做。假设你编写了一个函数来比较true/false,并且在PHP(0 == false)= true中返回0,但是(0 === false)= false如果你为场景1编码但忽略场景2,然后编写一个单元测试,测试场景1是否有效,但忽略场景2(如果你总是用这种方式进行编码,那么你可能会这么做),那么你的单元测试会根据你所定义的但仍然错误的方式通过。