草庐IT

Junit-Tests

全部标签

java - Junit @Before/@After 调用的顺序是什么?

我有一个集成测试套件。我有一个IntegrationTestBase类来扩展我的所有测试。这个基类有一个@Before(publicvoidsetUp())和@After(publicvoidtearDown())方法来建立API和DB连接。我一直在做的只是在每个测试用例中重写这两个方法并调用super.setUp()和super.tearDown()。但是,如果有人忘记调用super或将它们放在错误的位置并引发异常并且他们忘记在finally中调用super或其他什么,这可能会导致问题。我想要做的是在基类final上创建setUp和tearDown方法,然后添加我们自己的注释@Bef

java - 错误 :(23, 17) 无法解析 : junit:junit:4. 12

为什么我每次在AndroidStudio中新建一个项目,总是出现:Error:(23,17)Failedtoresolve:junit:junit:4.12?当我删除依赖项中的testCompile'junit:junit:4.12'时,它不再是问题了。build.gradleapplyplugin:'com.android.application'android{compileSdkVersion23buildToolsVersion"23.0.1"defaultConfig{applicationId"com.okedroid.myapplication"minSdkVersion

java - 为什么使用 JUnit 进行测试?

也许我的问题是一个新手问题,但我无法真正理解在什么情况下我会使用junit?无论我是编写简单的应用程序还是大型应用程序,我都使用System.out语句对其进行测试,这对我来说非常容易。为什么要使用JUnit创建测试类,如果我们仍然需要调用相同的方法,在项目中创建不必要的文件夹,检查它们返回的内容,然后我们需要对所有内容进行注释,那么我们会产生开销?为什么不编写一个类并使用System.out立即对其进行测试,但不创建测试类?PS。我从未参与过我刚刚学习的大型项目。那么目的是什么? 最佳答案 这不是测试,而是“手动查看输出”(在商业

java - JUnit 混淆 : use 'extends TestCase' or '@Test' ?

我发现JUnit的正确使用(或至少是文档)非常令人困惑。这个问题既可以作为future的引用,也可以作为一个真实的问题。如果我理解正确的话,创建和运行JUnit测试有两种主要方法:方法A(JUnit3风格):创建一个扩展TestCase的类,并使用单词test开始测试方法。当将该类作为JUnit测试运行时(在Eclipse中),所有以单词test开头的方法都会自动运行。importjunit.framework.TestCase;publicclassDummyTestAextendsTestCase{publicvoidtestSum(){inta=5;intb=10;intresu

java - 在 Junit Test 中覆盖默认 Spring-Boot application.properties 设置

我有一个Spring-Boot应用程序,其中默认属性设置在类路径(src/main/resources/application.properties)中的application.properties文件中。我想用test.properties文件(src/test/resources/test.properties)中声明的属性覆盖我的JUnit测试中的一些默认设置我通常有一个专门的配置类用于我的Junit测试,例如packagefoo.bar.test;importorg.springframework.boot.autoconfigure.EnableAutoConfigurati

java - 带有 Junit 4.7 "!!! JUnit version 3.8 or later expected:"的 IntelliJ IDEA

当我尝试在IntelliJIDEA中运行以下测试时我收到消息:"!!!JUnitversion3.8orlaterexpected:"需要注意的是这是一个Android我正在IntelliJIDEA9中从事的项目。publicclassGameScoreUtilTest{@TestpublicvoidtestCalculateResults()throwsException{finalGamegame=newGame();finalPlayerplayer1=newPlayer();{finalPlayedHoleplayedHole=newPlayedHole();playedHol

unit-testing - 每晚构建与持续集成 : Long-Running Automated Tests

我们有一个大型自动化集成测试套件的“问题”。虽然我们的构建时间是合理的(虽然在我们的构建运行中测试这么大的功能block很棒,但这显然是实现CI的障碍,我发现这对于将源代码树保持在“始终可构建”状态非常有帮助。我查看过thisone等讨论主题,其中详细说明了区别。这引出了几个问题:CI是否规定或推荐单元与集成测试自动化?我过去曾听说过Unit-only,但在快速搜索中没有找到任何此类陈述(或理由)。对于组合构建+自动化测试时间/比率来为团队提供有效CI的“最佳实践”是什么?我的直觉告诉我,最坏的情况应该是从长期运行的夜间构建+集成测试到CI的最佳前进方式是什么?我正在考虑一个仅包含一些

java - 获取 JUnit 4 中当前正在执行的测试的名称

在JUnit3中,我可以像这样获取当前正在运行的测试的名称:publicclassMyTestextendsTestCase{publicvoidtestSomething(){System.out.println("Currenttestis"+getName());...}}将打印“当前测试是testSomething”。在JUnit4中是否有任何开箱即用或简单的方法可以做到这一点?背景:显然,我不想只打印测试的名称。我想加载存储在与测试同名的资源中的测试特定数据。你知道,conventionoverconfiguration等等。 最佳答案

java - 2 个 JUnit 断言类之间的差异

JUnit框架包含2个Assert类(显然在不同的包中),每个类的方法看起来都非常相似。谁能解释这是为什么?我指的类是:junit.framework.Assert和org.junit.Assert. 最佳答案 (JUnit3的)旧方法是通过扩展junit.framework.TestCase来标记测试类。继承的junit.framework.Assert本身和您的测试类获得了以这种方式调用断言方法的能力。从JUnit第4版开始,该框架使用Annotations来标记测试。所以你不再需要扩展TestCase。但这意味着,断言方法不可

java - System.out.println() 的 JUnit 测试

我需要为一个设计不佳的旧应用程序编写JUnit测试,并且将大量错误消息写入标准输出。当getResponse(Stringrequest)方法正常运行时,它会返回一个XML响应:@BeforeClasspublicstaticvoidsetUpClass()throwsException{Propertiesqueries=loadPropertiesFile("requests.properties");Propertiesresponses=loadPropertiesFile("responses.properties");instance=newResponseGenerato