草庐IT

java - 如何使用 JUnit 测试依赖于环境变量的代码?

我有一段使用环境变量的Java代码,代码的行为取决于该变量的值。我想用不同的环境变量值测试这段代码。如何在JUnit中做到这一点?我见过somewaystosetenvironmentvariablesinJava一般来说,但我对它的单元测试方面更感兴趣,特别是考虑到测试不应该相互干扰。 最佳答案 图书馆SystemLambda有一个方法withEnvironmentVariable用于设置环境变量。importstaticcom.github.stefanbirkner.systemlambda.SystemLambda.*;pu

java - Junit - 运行一次设置方法

我设置了一个包含几个测试的类,而不是使用@Before我希望有一个在所有测试之前只执行一次的设置方法。Junit4.8可以吗? 最佳答案 虽然我同意@assylias的观点,即使用@BeforeClass是一个经典的解决方案,但并不总是很方便。使用@BeforeClass注释的方法必须是静态的。对于一些需要测试用例实例的测试来说非常不方便。例如,基于Spring的测试使用@Autowired来处理在spring上下文中定义的服务。在这种情况下,我个人使用带有@Before注释的常规setUp()方法并管理我的自定义static(!)

java - JUnit 与 TestNG

已结束。此问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提出有关书籍、工具、软件库等方面的建议的问题。您可以编辑问题,以便用事实和引用来回答它。关闭3年前。Improvethisquestion在工作中,我们目前仍在使用JUnit3来运行我们的测试。我们一直在考虑切换到JUnit4来编写新测试,但我已经关注TestNG有一段时间了。你们都有哪些使用JUnit4或TestNG的经验,并且对于大量测试似乎更有效?编写测试的灵active对我们来说也很重要,因为我们的功能测试涵盖了广泛的方面,需要以多种方式编写才能获得结果。旧的测试不会被重写,因为它们

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

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

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