当前位置: 首页 > 知识库问答 >
问题:

JUnit测试——一个应该通过预期结果的测试有什么问题?

刁冠宇
2023-03-14

我正在我的数据库应用程序中测试一个简单的东西。创造一个产品。为此,我使用JUnit测试,这里是总是失败的测试,而不是预期的结果变成绿色(通过)...

@Test
public void testCreate(){
    Produkt test = new Produkt(20, "junit", "junitk", false, 900.67, true, true);
    handler.createProdukt(test);
}

当我简单地用一个main方法尝试它时(只是创建一个新的Produkt,看看它是否有效…)create函数非常有效,创建了这个Produkt。

我做错了什么?

附言:这是我设置测试的代码:

@Before
public void setUp() throws SQLException, ClassNotFoundException{
    try {
        this.shandler = new ServiceHandler();
        this.setServiceHandler(shandler);
        manager.getConnection();
        manager.getConnection().setAutoCommit(false);
    } catch (SQLException ex) {
        System.err.println("ERROR:");
        ex.printStackTrace();
    }

}

@After
public void tearDown() throws SQLException, ClassNotFoundException{
    manager.getConnection().rollback();
    manager.closeConnection();
}

更新我猜你指的是故障跟踪:

JAVAlang.NullPointerException在测试中。JUnitAbstractTests。在sun上创建testCreate(JUnitAbstractTests.java:35)。反映NativeMethodAccessorImpl。在sun上调用0(本机方法)。反映NativeMethodAccessorImpl。在sun上调用(NativeMethodAccessorImpl.java:39)。反映DelegatingMethodAccessorImpl。在java上调用(DelegatingMethodAccessorImpl.java:25)。朗,反思一下。方法在org上调用(Method.java:597)。朱尼特。跑步者。模型框架方法1美元。在org上运行ReflectVeCall(FrameworkMethod.java:45)。朱尼特。内部的跑步者。模型可反射的。在org上运行(reflectVeCallable.java:15)。朱尼特。跑步者。模型框架方法。在org上快速调用(FrameworkMethod.java:42)。朱尼特。内部的跑步者。声明。调用方法。在org上评估(InvokeMethod.java:20)。朱尼特。跑步者。家长跑步者。runLeaf(ParentRunner.java:263)位于org。朱尼特。跑步者。BlockJunitClassRunner。org上的runChild(BlockJUnit4ClassRunner.java:68)。朱尼特。跑步者。BlockJunitClassRunner。org上的runChild(BlockJUnit4ClassRunner.java:47)。朱尼特。跑步者。ParentRunner 3美元。在org上运行(ParentRunner.java:231)。朱尼特。跑步者。ParentRunner 1美元。日程安排(ParentRunner.java:60)在org上。朱尼特。跑步者。家长跑步者。org上的runChildren(ParentRunner.java:229)。朱尼特。跑步者。家长跑步者。访问org上的$000(ParentRunner.java:50)。朱尼特。跑步者。ParentRunner 2美元。在org上评估(ParentRunner.java:222)。朱尼特。跑步者。家长跑步者。在org上运行(ParentRunner.java:300)。日食jdt。内部的junit4。跑步者JUnit4TestReference。在org上运行(JUnit4TestReference.java:50)。日食jdt。内部的朱尼特。跑步者测试执行。在org上运行(TestExecution.java:38)。日食jdt。内部的朱尼特。跑步者RemoteTestRunner。org上的runTests(RemoteTestRunner.java:467)。日食jdt。内部的朱尼特。跑步者RemoteTestRunner。org上的runTests(RemoteTestRunner.java:683)。日食jdt。内部的朱尼特。跑步者RemoteTestRunner。在org上运行(RemoteTestRunner.java:390)。日食jdt。内部的朱尼特。跑步者RemoteTestRunner。main(RemoteTestRunner.java:197)

共有1个答案

邬朗
2023-03-14

假设代码片段是准确的,setUp()方法实例化shandler字段,而testCreate()测试使用处理程序字段。stacktrace清楚地显示,在testCreate()中有一个NullPointerException。所以你做错的事情是试图对一个值为null的对象调用一个方法。

 类似资料:
  • 接口测试没有预期结果如何测试?(即没有接口文档中写的预期结果) 希望知道的小伙伴回答一下,谢谢!

  • 我想测试某个异常是用作为JUnit测试方法的某个部分中的异常原因抛出的。 测试方法本身不应该抛出异常--只是它的一个特定部分。

  • 我在src/main/resources中有一些文件,当运行junit测试时,我想要这些文件。只有一个设置略有不同的测试特定文件才会否决相应的文件。因此,我的想法是给这个测试文件起一个和主文件一样的名字,并把它放在src/test/resources下,放在和主文件一样(相应)的地方。但是现在我有一个问题,我不能使用src/main/resources中的所有其他文件。 我原以为junit测试会在

  • 问题内容: 我有以下活动: 并进行以下JUnit测试: 我如何确保单击按钮设置正确的结果(调用),该结果将返回到任何以此为起始的活动? 问题答案: 使用问题中的当前Activity实现,即,通过单击ChildActivity中的按钮设置结果,然后立即销毁该活动,在ChildActivityTest中我们无法做很多测试结果相关的东西。 相关问题测试onActivityResult()的答案显示了如何

  • 一旦configure确定了某个特征是否存在,它将如何记录这一信息?这里有四种记录方式: 定义一个C预处理器符号、在输出文件中设置一个变鼠、为将来运行configure而把结果储存到一个缓存文件中, 以及打印一条消息以便让用户知道测试的结果。 定义C预处理器符号 对一个特征的检测的常见回应是定义一个表示测试结果的C预处理器符号。这是通过调用AC—DEFINE 或者AC—DEFINE—UNQUOTE

  • 参数化测试可以将不同的数据输入到测试中。不过,我创建了一个示例计算器,希望为其创建参数化测试。但是,我发现您只能为单个测试创建一组参数化数据。 我已经创建了参数化测试,用于添加两个数字,得到预期的结果。由于预期结果会有所不同,因此该数据将不适用于减法运算。 有没有可能为每个加、减、乘、除测试提供参数化数据? 非常感谢您的建议,