`

junit中针对list的测试

 
阅读更多
junit中的不少测试的好方法,比如针对LIST的测试,可以使用
hamcrest-library类库,首先在POM.XML中加入:

<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.12</version>
			<scope>test</scope>
			<exclusions>
				<exclusion>
					<groupId>org.hamcrest</groupId>
					<artifactId>hamcrest-core</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<!-- This will get hamcrest-core automatically -->
		<dependency>
			<groupId>org.hamcrest</groupId>
			<artifactId>hamcrest-library</artifactId>
			<version>1.3</version>
			<scope>test</scope>
		</dependency>
	</dependencies>


1) 测试LIST,字符串
   
public class ListTest {

    @Test
    public void testAssertList() {

        List<String> actual = Arrays.asList("a", "b", "c");
        List<String> expected = Arrays.asList("a", "b", "c");
		
		//All passed / true
		
        //1. Test equal.
        assertThat(actual, is(expected));

        //2. If List has this value?
        assertThat(actual, hasItems("b"));

        //3. Check List Size
        assertThat(actual, hasSize(3));

        assertThat(actual.size(), is(3));

        //4.  List order

        // Ensure Correct order
        assertThat(actual, contains("a", "b", "c"));

        // Can be any order
        assertThat(actual, containsInAnyOrder("c", "b", "a"));

        //5. check empty list
        assertThat(actual, not(IsEmptyCollection.empty()));

        assertThat(new ArrayList<>(), IsEmptyCollection.empty());

    }

}



2) 测试INTEGER
  
 @Test
    public void testAssertList() {

        List<Integer> actual = Arrays.asList(1, 2, 3, 4, 5);
        List<Integer> expected = Arrays.asList(1, 2, 3, 4, 5);

        //All passed / true

        //1. Test equal.
        assertThat(actual, is(expected));

        //2. Check List has this value
        assertThat(actual, hasItems(2));

        //3. Check List Size
        assertThat(actual, hasSize(4));

        assertThat(actual.size(), is(5));

        //4.  List order

        // Ensure Correct order
        assertThat(actual, contains(1, 2, 3, 4, 5));

        // Can be any order
        assertThat(actual, containsInAnyOrder(5, 4, 3, 2, 1));

        //5. check empty list
        assertThat(actual, not(IsEmptyCollection.empty()));

        assertThat(new ArrayList<>(), IsEmptyCollection.empty());

		//6. Test numeric comparisons
        assertThat(actual, everyItem(greaterThanOrEqualTo(1)));

        assertThat(actual, everyItem(lessThan(10)));

    }


}


3 测试LIST中有复杂对象
   

 @Test
    public void testAssertList() {

        List<Fruit> list = Arrays.asList(
                new Fruit("Banana", 99), 
                new Fruit("Apple", 20)
        );

        //Test equals
        assertThat(list, hasItems(
                new Fruit("Banana", 99),
                new Fruit("Apple", 20)
        ));

        assertThat(list, containsInAnyOrder(
                new Fruit("Apple", 20),
                new Fruit("Banana", 99)
        ));

        //Test class property, and its value
        assertThat(list, containsInAnyOrder(
                hasProperty("name", is("Apple")),
                hasProperty("name", is("Banana"))
        ));

    }

    public class Fruit {

        public Fruit(String name, int qty) {
            this.name = name;
            this.qty = qty;
        }

        private String name;
        private int qty;

        public int getQty() {
            return qty;
        }

        public void setQty(int qty) {
            this.qty = qty;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        //Test equal, override equals() and hashCode()
        @Override
        public boolean equals(Object o) {
            if (this == o) return true;
            if (o == null || getClass() != o.getClass()) return false;
            Fruit fruit = (Fruit) o;
            return qty == fruit.qty &&
                    Objects.equals(name, fruit.name);
        }

        @Override
        public int hashCode() {
            return Objects.hash(name, qty);
        }
    }


}
0
0
分享到:
评论

相关推荐

    Junit4教程

    Junit4支持参数化的测试方法,使得针对不同数据集的测试更加高效。 **示例代码**: ```java import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.junit.runners.Parameterized....

    习题课1Java编程与JUnit单元测试1

    JUnit是Java中广泛使用的单元测试框架,它允许我们编写针对单个方法的测试,并在运行时检查其结果是否符合预期。 ```java import org.junit.Test; import static org.junit.Assert.assertEquals; public class ...

    Spring3单元测试和集成测试

    在Spring框架中,单元测试和...而DBunit则在数据库集成测试中扮演关键角色,帮助我们有效地管理和维护测试数据,确保测试的一致性和可靠性。在实际开发中,熟练掌握这些工具和概念,能有效提升代码质量,降低维护成本。

    robotium Android自动化 测试范例

    然后,创建一个继承自Selenium的JUnit测试类,如`ExampleTest`,并在`setUp()`方法中初始化Solo对象,它是Robotium的主要测试助手。例如: ```java public class ExampleTest extends ...

    快手2019秋招笔试试题-测试A试卷

    "快手2019秋招笔试试题-测试A试卷" 这个标题揭示了我们关注的是快手公司2019年秋季招聘的笔试环节中,针对测试岗位的一份试题集。快手作为知名的短视频分享平台,其招聘流程往往包括技术性的测试,以确保应聘者具备...

    C++ JAVA 软件测试面试题汇总

    - **自动化测试**:使用Selenium、JUnit、TestNG等工具进行自动化测试脚本编写和执行,提高测试效率。 - **持续集成与持续部署(CI/CD)**:利用Jenkins、GitLab CI/CD等工具实现代码自动构建、测试和部署,确保...

    ocjp.tips:显示 Java 最棘手功能的一组 JUnit 测试

    在这个项目中,"ocjp.tips"创建了一系列JUnit测试,针对Java中最具挑战性的功能,如异常处理、多线程、反射、枚举、集合框架、内存管理和泛型等。 1. 异常处理:Java的异常处理机制是其强大但有时也复杂的特性之一...

    软件测试,java/c++面试题总结

    4. 测试工具:如Selenium用于Web自动化测试,Junit和TestNG用于Java的单元测试,Appium针对移动应用测试等。 二、Java面试题重点 1. Java基础:掌握面向对象的三大特性(封装、继承、多态),熟悉异常处理,理解...

    cc++java软件测试面试笔试题汇总

    4. **自动化测试**:了解Selenium、Junit、TestNG等自动化测试工具的使用。 5. **敏捷开发与测试**:Scrum、Kanban框架下的测试实践,持续集成和持续交付。 6. **测试文档**:需求分析、测试计划、测试用例、测试...

    C++、JAVA+、C+++、软件测试面试题

    本压缩包文件“C++、JAVA+、C+++、软件测试面试题.rar”包含了针对C++、Java++(可能是Java的误写)、C++以及软件测试领域的常见面试问题,帮助求职者准备这些技术领域的工作面试。以下将详细探讨这些关键知识点。 ...

    scalatest-embedded-kafka:一个提供内存中Kafka实例以针对其运行测试的库

    `scalatest-embedded-kafka` 是一个专门针对Scala和Kafka开发的测试库,它允许开发者在测试环境中快速、便捷地搭建一个内存中的Kafka实例,从而进行集成测试和端到端测试。这个库是基于ScalaTest构建的,使得与Scala...

    实验三报告1

    在测试中,我们看到`BaseBullet`、`AbstractFlyingObject`和`AbstractAircraft`等接口或抽象类的引用,这表明类之间可能存在继承关系。例如,`crash()`方法接受`AbstractFlyingObject`类型的参数,这允许不同类型的...

    海量C++,java,软件测试程序员面试题

    针对"海量C++,java,软件测试程序员面试题"这个主题,我们可以深入探讨这三个领域的核心知识点,以及如何为这些领域的面试做准备。 首先,让我们关注C++。C++是一种静态类型的、编译式的、通用的、大小写敏感的、...

    阿里巴巴2010校园招聘技术类笔试试题(Java,搜索研发,C++,测试工程师)南京站.docx

    文档标题和描述提到了2010年阿里巴巴在南京进行的校园招聘中针对技术类岗位,包括Java、搜索研发、C++以及测试工程师的笔试试题。这些试题反映了当时阿里巴巴对于这些技术方向的基础知识、技能和解决问题能力的要求...

    ShoppingList:此存储库用于在带hilt的android上学习测试

    "ShoppingList:此存储库用于在带hilt的android上学习测试" 这个标题表明,这是一个关于Android应用开发的学习资源,主要关注的是如何在Android项目中集成和使用Hilt进行依赖注入,并且侧重于测试部分。Hilt是Google...

    Robotium_Demo

    1. **Robotium简介**:Robotium提供了一套简洁的API,允许开发者编写针对Android应用的全自动测试脚本。它支持UI元素的自动点击、滑动、输入等操作,并能处理对话框、通知以及多活动间的切换。 2. **安装与配置**:...

    java testwork

    在Java中,JUnit是一个广泛使用的单元测试框架,它提供了编写和运行测试用例的便利工具。学习者可能需要创建JUnit测试类,对代码的各个部分进行断言,以确保它们按预期工作。此外,Mockito是一个流行的库,用于模拟...

    easymock-request.getParamsNames

    总的来说,Easymock 在Servlet单元测试中扮演了重要角色,它使得我们能够在控制环境中测试Servlet的参数处理逻辑,而无需实际的HTTP服务器。通过模拟 `HttpServletRequest` 并设定其行为,我们可以确保即使在复杂的...

    jdbc_Utils_jar

    在数据库相关的开发中,JUnit可以帮助我们编写针对数据库操作的测试,确保我们的DAO(Data Access Object)层和其他数据库交互代码能够按预期工作。 3. **数据库驱动jar**: 这个压缩包可能包含了特定数据库的JDBC...

Global site tag (gtag.js) - Google Analytics