gpt4 book ai didi

java - 运行 JUnit 中 TestSuite 上添加的测试

转载 作者:行者123 更新时间:2023-12-01 13:01:36 26 4
gpt4 key购买 nike

我正在阅读Pragmatic Unit Testing in Java with JUnit在第 3.4 部分,它给出了根据本书应该运行的代码。我很困惑它显然不能返回 TestSuite 作为测试,这是对书本的更正吗?执行此操作的正确方法应该是什么? (仅运行简短的测试)

import junit.framework.*;
public class TestClassTwo extends TestCase {
public TestClassTwo(String method) {
super(method);
}

// This one takes a few hours...
public void testLongRunner() {
TSP tsp = new TSP(); // Loard with default cities
assertEquals(140, tsp.shortestPath(5)); // top 5
}

public void testAnotherShortTest() {
TSP tsp = new TSP(); // Load with default cities
assertEquals(586, tsp.shortestPath(10));
}
public static Test suite() {
TestSuite suite = new TestSuite();
// Only include short tests
suite.addTest( new TestClassTwo("testShortTest"));
suite.addTest(new TestClassTwo("testAnotherShortTest"));
return suite;
}
}

所以我尝试运行它,这是堆栈跟踪,它还给出了初始化错误。如果我添加一个强制转换,它仍然会给我一个初始化错误。

  java.lang.Error: Unresolved compilation problem: Type mismatch: cannot convert from TestSuite to Test
at PracticeTest.suite(PracticeTest.java:31)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.junit.internal.runners.SuiteMethod.testFromSuiteMethod(SuiteMethod.java:35)
at org.junit.internal.runners.SuiteMethod.<init>(SuiteMethod.java:24)
at org.junit.internal.builders.SuiteMethodBuilder.runnerForClass(SuiteMethodBuilder.java:11)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:26)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.<init>(JUnit4TestReference.java:33)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestClassReference.<init>(JUnit4TestClassReference.java:25)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:48)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:452)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

最佳答案

本书中的示例似乎有点旧,因为它是 JUnit 3.x 风格的。请注意,这没有错 - TestSuite实现了 Test 接口(interface),因此它可以正常工作。

但是,在现代 JUnit 4.x 测试中,将测试聚合到套件中的推荐方法是 using the @Suite annotation .

关于java - 运行 JUnit 中 TestSuite 上添加的测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23477378/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com