Java Junit 测试问题

7

我正在使用Junit 4。我的整个程序都很好用。我正在尝试编写一个测试用例。但是出现了一个错误...

这里是一个非常基本的样例测试。

public class di  extends TestCase{
    private static Records testRec;
    public void testAbc() {
        Assert.assertTrue(
            "There should be some thing.",
            di.testRec.getEmployee() > 0);
    }

}

当我运行这个程序时,它给了我一个错误提示。
fName can not be null

如果我使用 super 并像这样做:
public TestA() {
super("testAbc");
}

所有it方面的功能都正常工作。在JUnit 3.X之前不是这样的,我做错了还是他们更改了呢:(对不起如果我的表述不清楚

有没有办法在没有使用super或调用函数等的情况下执行测试?


TestAgnes是什么?在第一个代码片段中没有提到。请澄清您的问题。 - Bozho
2个回答

16

在 JUnit 4 中,你不需要继承 TestCase 类,相反地,使用 @Test 注解来标记你的测试方法:

public class MyTest {
    private static Records testRec;
    @Test
    public void testAbc() {
        Assert.assertTrue(
            "There should be some thing.",
            MyTest.testRec.getEmployee() > 0);
    }
}

顺便提一句,在你的类中测试一个static成员可能会让你的单元测试相互依赖,这不是一个好习惯。除非你有非常充分的理由,否则我建议移除static修饰符。


1
谢谢您的回复。当我尝试这个时,它给了我一个错误:“类型不匹配:无法从Test转换为Annotation”,我应该怎么做才能避免这个错误?如果我使用@Test,它就会给我这个错误。 - user238384
4
听起来你导入了一些不是注解的其他测试类。确保导入org.junit.Test,这应该可以解决问题。 - Péter Török
1
我想补充一点,如果你遇到了上面的“类型不匹配”错误,可能是因为你像我一样将测试类命名为“Test”,与导入的内容冲突了。 - Niko

0
这不是你的情况,但这个错误也可能意味着你的项目中有一个名为Test.java的文件。将其重命名即可解决错误,但在重构后,@Test将会被更改为@NewName(至少在Eclipse中),所以记得手动将其改回@Test

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接