Feed4Junit官方地址:
http://databene.org/feed4junit.html
Feed4Junit测试数据来自数据库:
Feed4JUnit 1.1.2 发布了,该版本支持数据来自数据库
利用Feed4JUnit能够很方便用随机但校验过的数据执行冒烟测试来提高代码 代码覆盖率和发现由非常特殊的数据结构产生的Bug。此外还可以利用Feed4JUnit轻松定义等价类测试。
官方文档:
Retrieving test data from a database
Databases can be declared and configured with a @Database annotation. When applying the annotation to a class, the defined database is available to all test methods. When annotating a method, the database is available only in this method. A basic configuration can be performed by specifying the typical JDBC connection settings: url, driver, user,password. The database declaration must specify an id, by which the database can be referred to as @Source of a method. The @Source annotation must refer to the database idand define a SQL query as selector. The number of query result columns must match the number of method parameters:
@RunWith(Feeder.class) |
Alternatively to the explicit database connection configuration, you can place database environment configurations in your user directory and refer to them in the test:
@Database(id = "db", environment = "f4jdb") |
Read more about environment files in the DB Sanity environment files documentation.
Environment Files
An environment file carries the identifier of the environment in its name: An environment 'mydb' is configured in a properties file 'mydb.env.properties'. The environment name is the only required argument for command line execution of DB Sanity.
The related properties file first is searched in the current working directory. If it is not found there, DB Sanity looks up the environment in a central configuration directory below your user's home directory: $USER.HOME/databene/. This way you do not need to copy environment files for each DBSanity project you are using and can reuse them in other Databene applications like Benerator. You can as well specify an environment name that refers to another directory. For example, an environment name 'config/test' refers to a file'config/test.env.properties'.
In the file, you need to specify details for connecting your database with a JDBC driver:
Name | Description | |
db_url | JDBC URL of the database | required |
db_driver | Java class name of the JDBC driver | required |
db_user | user name for database login | optional |
db_password | password for database login | optional |
db_catalog | the (JDBC) catalog to use | optional |
db_schema | the (JDBC) schema to use | optional |
If you are not familiar with JDBC, you can look up driver archive names, class names and url formats in a table in the Benerator documentation: http://databene.org/databene-benerator/116-my-first-ide-and-maven-based-benerator-project.html.
@Database注释在类头部:
package com.easyway.feed4junit; import static org.junit.Assert.assertEquals; import org.databene.benerator.anno.Database; import org.databene.benerator.anno.Source; import org.databene.feed4junit.Feeder; import org.junit.Test; import org.junit.runner.RunWith; import com.easyway.junit4.JunitSample.UserAccess; /* * Feed4JUnit - Get Data from Database, all test methods can use the database data */ @RunWith(Feeder.class) @Database( id = "testdb", url = "jdbc:oracle:thin:@192.168.xxx.xxx:1521:ticket", driver = "oracle.jdbc.driver.OracleDriver", user = "xxx", password = "xxx") public class F4JfromDB { @Test @Source(id = "testdb", selector = "select * from test_feed4junit") public void testAccessCheck(String userName, String pw, String expected) { Boolean bSucess = UserAccess.accessCheck(userName.trim(), pw.trim()); assertEquals(expected.trim(), bSucess.toString()); } }
@Database注释在方法:
package com.easyway.feed4junit; import static org.junit.Assert.assertEquals; import org.databene.benerator.anno.Database; import org.databene.benerator.anno.Source; import org.databene.feed4junit.Feeder; import org.junit.Test; import org.junit.runner.RunWith; import com.easyway.junit4.JunitSample.UserAccess; /* * Feed4JUnit - Get Data from Database, only the specified method can use the database data */ @RunWith(Feeder.class) public class F4JfromDB_Method { @Test @Database( id = "testdb", url = "jdbc:oracle:thin:@192.168.45.171:1521:ticket", driver = "oracle.jdbc.driver.OracleDriver", user = "tbs", password = "tbs") @Source(id = "testdb", selector = "select * from test_feed4junit") public void testAccessCheck(String userName, String pw, String expected) { Boolean bSucess = UserAccess.accessCheck(userName.trim(), pw.trim()); assertEquals(expected.trim(), bSucess.toString()); } }
@Database注释基于配置文件的方式:
在项目src的统计目录下文件必须是同级别的下文件:
dbtest.env.properties文件名称的格式为Database的注解属性中environment+“env.properties”
内容如下:
db_url=jdbc:oracle:thin:@192.168.xxxx.xxx:1521:ticket
db_driver=oracle.jdbc.driver.OracleDriver
db_user=xxxx
db_password=xxxx
测试代码:
package com.easyway.feed4junit; import static org.junit.Assert.assertEquals; import org.databene.benerator.anno.Database; import org.databene.benerator.anno.Source; import org.databene.feed4junit.Feeder; import org.junit.Test; import org.junit.runner.RunWith; import com.easyway.junit4.JunitSample.UserAccess; /* * Feed4JUnit - Get Data from Database, only the specified method can use the database data */ @RunWith(Feeder.class) public class F4JfromConfiguration { @Test @Database(id = "testdb", environment = "dbtest") @Source(id = "testdb", selector = "select * from test_feed4junit") public void testAccessCheck(String userName, String pw, String expected) { Boolean bSucess = UserAccess.accessCheck(userName.trim(), pw.trim()); assertEquals(expected.trim(), bSucess.toString()); } }
相关推荐
首先,我们需要在测试类中引入`Feed4JUnit`的相关依赖,并定义一个`@TestSource`注解,指定数据源的位置。数据源可以是文件路径,也可以是URL或者数据库查询。 接着,我们创建一个`TestData`类,用于解析和表示测试...
它可以读取外部数据源(如CSV文件、数据库等),并为每个数据集运行测试。 #### 2.3 Mock Mock是用于模拟对象的一种技术,常用于单元测试中隔离被测对象与其他对象的交互。例如,使用Mockito库可以轻松创建模拟...
在Android平台上,RSS阅读器是一种常见的应用程序,它允许用户订阅并获取来自不同网站的RSS feed,从而方便地浏览和管理新闻、博客文章等更新。在这个"android源代码 Rss阅读器"项目中,开发者提供了一个自编写的源...
4. **数据模型**:定义RSS feed相关的数据模型类,如`Feed`,`Item`等,用于存储从XML解析出来的信息,如标题、描述、链接等。 5. **数据库存储**:为了离线访问和缓存RSS内容,可以使用SQLite数据库存储RSS feed。...
3. **数据模型**:为了存储和管理从RSS源获取的数据,需要创建对应的Java类,如`Feed`、`Item`等,它们映射XML文档中的元素。 4. **SQLite数据库**:为了离线存储和加载RSS项,可以使用Android内置的SQLite数据库。...
8. **缓存策略**:为了提高用户体验,通常会将新闻数据缓存在本地,如SQLite数据库(Android)或CoreData(iOS),或者使用SharedPreferences(Android)存储一些简单的配置信息。 9. **异步处理**:避免阻塞主线程...
这通常使用Java的`HttpURLConnection`或第三方库如Apache HttpClient来实现。 3. **数据模型**:设计RSS feed的数据模型,包括频道(Channel)、条目(Item)、作者、日期等元素,以便存储和显示信息。 4. **用户...
5. **数据持久化**:为了保存用户的订阅和阅读历史,可能使用了数据库(如SQLite)或简单的文本文件。 6. **事件驱动编程**:当新的RSS feed更新时,可能采用了事件监听机制来实时通知用户。 7. **多线程**:为了...
4. **SQLite数据库**:为了离线存储和管理已加载的RSS feed,可以使用Android内置的SQLite数据库。这样,即使没有网络连接,用户也能查看之前下载的新闻。 5. **UI设计**:界面应该简洁易用,允许用户浏览和搜索RSS...
这通常涉及到XML解析,例如使用`XmlPullParser`或第三方库如`Retrofit`和`Gson`。源码中可能会有一个类专门负责解析RSS feed的XML数据,提取出标题、链接、发布日期等信息。 2. **网络请求**: - 要获取RSS feed,...
2. **网络请求**:使用HttpURLConnection或第三方库如OkHttp、Volley来获取RSS feed的内容。考虑到Android的网络访问限制,需要在主线程之外进行网络操作,可以使用AsyncTask或者Retrofit等异步处理库。 3. **数据...
8. **测试与调试**:为了保证应用的质量,开发者可能使用了Android Studio的测试框架,如JUnit和Espresso,进行单元测试和UI测试。同时,使用Android Profiler工具进行性能分析和内存泄漏检查。 综上所述,"android...
Feed Blogger通常是一种RSS(Really Simple Syndication)或Atom格式的数据源,它允许用户订阅并接收博客、新闻站点或其他在线内容的最新发布。 【描述】"辅助应用 Feed Blogger 阅读器" 强调了该应用的辅助功能,...
7. **数据存储**:为了保存用户的订阅信息和阅读历史,可能需要使用数据库。Java提供了JDBC API进行数据库操作,也可能使用ORM框架如Hibernate或MyBatis。 8. **软件设计模式**:遵循良好的设计原则和模式,如工厂...
源码中包含了使用JDBC进行数据库交互的示例,这可以帮助开发者理解如何在Java中执行SQL语句,管理数据库连接池,以及如何设计数据访问对象(DAO)层。 5. **框架和库的使用**: Roller可能依赖于一些Java库,如...
8. **数据持久化**:为了保存用户的订阅和阅读状态,项目可能使用SQLite数据库来存储RSS源信息和已读状态,以便下次启动应用时快速加载。 9. **权限管理**:考虑到Android系统的权限模型,项目需要在Manifest文件中...
4. **用户界面**:系统提供一个友好的用户界面,让用户可以浏览和订阅RSS源。这通常涉及到Web开发,使用Java Servlets、JSP(JavaServer Pages)或者现代的Web框架如Spring MVC来实现。HTML、CSS和JavaScript用于...
8. **Adapter和ListView**:Adapter是连接数据源和视图的桥梁,ListView用于展示可滚动的数据列表,如RSS条目。 9. **异步处理**:由于网络操作应在后台线程中执行以避免阻塞UI,因此可能会涉及AsyncTask或现代的...
3. **多线程与并发**:为了提高用户体验,RSSFeedReader可能会使用多线程或异步处理来并行下载多个RSS源,避免因等待单一下载任务而阻塞UI。Java中的`Thread`、`ExecutorService`和`Future`接口可用来实现这一点。 ...
4. **缓存策略**:为了提高性能,RSS生成器可能会实施缓存策略,将最近生成的RSS feed存储一段时间,避免频繁的数据库查询或内容生成。 5. **安全与权限控制**:考虑到RSS订阅可能涉及敏感信息,RSSMaker需要提供...