标签: junit3

Maven 3和JUnit 4编译问题:包org.junit不存在

我正在尝试使用Maven构建一个简单的Java项目.在我的pom文件中,我声明JUnit 4.8.2是唯一的依赖项.仍然Maven坚持使用JUnit版本3.8.1.我如何解决它?

问题表现在编译失败:"package org.junit不存在".这是因为我的源代码中的import语句.JUnit 4.*中的正确包名称是org.junit.*,而在版本3中.*它是junit.framework.*

我想我已经在http://maven.apache.org/plugins/maven-surefire-plugin/examples/junit.html找到了关于问题根源的文档,但是那里的建议似乎是Maven专家的意思.我不明白该怎么做.

junit junit4 junit3 maven-3 maven

74
推荐指数
6
解决办法
17万
查看次数

setUp/tearDown(@ Before/@ After)为什么我们在JUnit中需要它们?

我相信我们都知道setUp(@Before)将在任何测试方法之前执行,而tearDown(@After)将在测试方法之后执行.

我们也知道Junit将为每个测试方法创建一个Test实例.

我的问题是,我们可以将setUp方法内容移动到类Constructor并删除setUp方法吗?是否有任何特定的理由保持setUp方法?

java junit junit4 junit3

62
推荐指数
4
解决办法
8万
查看次数

如何为android单元测试提供数据文件

我正在开发使用Android的java.xml.parsers.DocumentBuilder和DocumentBuilderFactory实现从XML文件加载信息的软件.我正在编写我的对象的单元测试,我需要能够提供各种xml文件来运行测试中的代码.我正在使用Eclipse并拥有一个单独的Android测试项目.我找不到将测试xml放入测试项目的方法,以便测试中的代码可以打开文件.

  • 如果我将文件放在测试项目的/ assets中,则测试中的代码无法看到它.
  • 如果我把文件放在被测代码的/ assets中,它当然可以看到文件,但现在我把我的实际系统弄得乱七八糟的只有测试数据文件.
  • 如果我将文件复制到/ sdcard/data目录,我可以从被测试的代码中打开它们,但这会干扰我的测试自动化.

任何关于如何让不同的xml测试文件驻留在测试包中但对被测试代码可见的建议将不胜感激.

以下是我尝试构建单元测试的方法:

public class AppDescLoaderTest extends AndroidTestCase
{
  private static final String SAMPLE_XML = "sample.xml";

  private AppDescLoader       m_appDescLoader;
  private Application         m_app;

  protected void setUp() throws Exception
  {
    super.setUp();
    m_app = new Application();
    //call to system under test to load m_app using
    //a sample xml file
    m_appDescLoader = new AppDescLoader(m_app, SAMPLE_XML, getContext());
  }

  public void testLoad_ShouldPopulateDocument() throws Exception
  {
    m_appDescLoader.load();

  }    
}
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为SAMPLE_XML文件位于测试的上下文中,但AndroidTestCase正在为被测系统提供上下文,该系统无法从测试包中看到资产.

这是每个答案给出的修改后的代码:

public class AppDescLoaderTest extends InstrumentationTestCase
{
   ...
  protected void setUp() …
Run Code Online (Sandbox Code Playgroud)

xml android unit-testing junit3

48
推荐指数
2
解决办法
2万
查看次数

JUnit 3和JUnit 4之间的区别

有人能用几句话描述JUnit 3和4之间的主要区别是什么?

junit junit4 junit3

41
推荐指数
1
解决办法
2万
查看次数

在Method级别(不是类级别)指定junit 4测试的顺序

我知道这是不好的做法,但需要做,或者我需要切换到testng.是否有类似于JUnit 3的testSuite的方法来指定要在类中运行的测试的顺序?

java unit-testing junit4 junit3

39
推荐指数
3
解决办法
2万
查看次数

为什么Android上的JUnit 4不起作用?

正如Android的文档所说,"请注意,Android测试API支持JUnit 3代码样式,但不支持JUnit 4." (测试基础).应该很清楚,JUnit 4不能与Android一起使用.

但为什么会这样呢?是因为测试是在DVM中执行的(因为Android Runtime只支持JUnit 3)?在JVM上,它本身可以选择应该使用的JUnit运行时.在DVM中这不可能吗?

java android dalvik junit4 junit3

33
推荐指数
1
解决办法
1万
查看次数

Junit在我的测试用例中断言OR条件

在我的测试用例中,我得到一个整数值:

int val = getXXX();
Run Code Online (Sandbox Code Playgroud)

然后,我想检查是否val等于3或等于5,这两种情况都可以.所以我做了:

assertTrue(val == 3 || val==5);
Run Code Online (Sandbox Code Playgroud)

我运行我的测试,日志显示val是5,但我的上述断言代码失败了AssertionFailedError.似乎我不能assertTrue(...)以这种方式使用,那么,如何检查OR条件的真实性?

java junit unit-testing junit4 junit3

22
推荐指数
3
解决办法
3万
查看次数

我如何让Ant JUnit任务运行所有测试,然后在任何测试失败时停止构建的其余部分

我正在使用类似这样的目标通过Ant运行JUnit:

<target name="junit" depends="compile">
    <mkdir dir="${report.dir}"/>
    <junit printsummary="yes" haltonfailure="yes" showoutput="yes" >
        <classpath>
            <path refid="classpath"/>
            <path location="${classes.dir}"/>
        </classpath>
        <formatter type="brief" usefile="false"/>
        <formatter type="xml"/>

        <batchtest fork="yes" todir="${report.dir}">
            <fileset dir="${src.dir}" includes="**/*Tests.java" />
        </batchtest>
    </junit>
</target>
Run Code Online (Sandbox Code Playgroud)

我有一个这样的课:

public class UserTests extends TestCase {

    public void testWillAlwaysFail() {
        fail("An error message");
    }
    public void testWillAlwaysFail2() {
        fail("An error message2");
    }
}
Run Code Online (Sandbox Code Playgroud)

haltonfailure="yes"一旦单个测试失败,似乎导致构建停止,仅记录第一个失败的测试.将其设置为"off"会导致整个构建成功(即使测试失败消息写入输出).

我希望它运行所有测试(即使一个失败),然后在任何测试失败时停止构建.

是否有可能做到这一点?

ant junit junit3

20
推荐指数
1
解决办法
9628
查看次数

Java:使用Junit 3进行异常测试

我想写一个测试IndexOutOfBoundsException.请记住,我们应该使用JUnit 3.

我的代码:

public boolean ajouter(int indice, T element) {
    if (indice < 0 || indice > (maListe.size() - 1)) {
        throw new IndexOutOfBoundsException();
    } else if (element != null && !maListe.contains(element)) {
        maListe.set(indice, element);
        return true;
    }
}
Run Code Online (Sandbox Code Playgroud)

经过一些研究,我发现你可以使用JUnit 4来实现这一点,@Test(expected = IndexOutOfBoundsException.class)但是我没有在JUnit 3中找到如何做到这一点.

如何使用JUnit 3进行测试?

java error-handling junit exception junit3

16
推荐指数
2
解决办法
1万
查看次数

Junit是否在每次测试方法调用时重新初始化该类?

当我运行以下代码时,两个测试用例都成为现实:

import static junit.framework.Assert.assertEquals;

import org.junit.Test;

public class MyTest{
    private int count;

    @Before
    public void before(){
        count=1;
    }

    @Test
    public void test1(){
        count++;
        assertEquals(2, count); 
    }

    @Test
    public void test2(){
        count++;
        assertEquals(2, count); 
    }
}
Run Code Online (Sandbox Code Playgroud)

预期的行为

  1. test1 - 成功
  2. test2 - 失败(正如预期的那样,计数将变为3)

实际行为

  1. test1 - 成功
  2. test2 - 成功

为什么junit适用reinitializing class/variable于每个测试方法调用.这是junit中的错误或故意提供.

java junit unit-testing junit4 junit3

16
推荐指数
4
解决办法
6444
查看次数

标签 统计

junit3 ×10

junit ×7

junit4 ×7

java ×6

unit-testing ×4

android ×2

ant ×1

dalvik ×1

error-handling ×1

exception ×1

maven ×1

maven-3 ×1

xml ×1