Predictive Cloud Computing 项目 Maven、单元和集成测试,以及静态代码分析-6
- UID
- 1066743
|
Predictive Cloud Computing 项目 Maven、单元和集成测试,以及静态代码分析-6
清单 10.单元测试顶部代码段的示例1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| package com.ibm.ei.engine.golf;
import static org.hamcrest.Matchers.containsInAnyOrder;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.notNullValue;
import static org.junit.Assert.assertThat;
import java.net.URL;
import javax.persistence.EntityManager;
import org.dbunit.dataset.DataSetException;
import org.dbunit.dataset.IDataSet;
import org.dbunit.dataset.xml.FlatXmlDataSetBuilder;
import org.junit.Test;
import com.google.common.base.Function;
import com.google.common.base.Optional;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
import com.google.common.io.Resources;
import com.ibm.ei.persistence.Player;
import com.ibm.ei.persistence.Site;
import com.ibm.ei.persistence.jpaloaders.Sites;
import com.ibm.ei.zepplin.H2DatabaseTestCase;
|
下一节将定义 Test 类。请注意,该类以 Test 结尾,这是习惯用法。这个特定的测试扩展了一个 H2DatabaseTest 案例,该案例提供了加载持久性测试和支持在 PCC 中访问这些测试的常见方法。playerIDFunction 是一种函数编程方法,用于将集合从一种格式转换为另一种格式。Test 类中的另一个部分利用了这个方法。
清单 11.单元测试顶部代码段的示例1
2
3
4
5
6
7
8
9
10
| public class XMLFeaturedGroupsTest extends H2DatabaseTestCase {
private final Function<Player, String> playerIDFunction = new Function<Player, String>() {
@Override
public String apply(Player input) {
return input.getPlayerId();
}
};
|
下一节将定义要在单元测试期间执行的测试。@Test 注释告诉 JUnit 测试框架,此方法应该作为一个测试来执行。然后该方法向父 H2DatabaseTest 案例类请求一个 EntityManager。该类能访问持久性方法。然后该方法使用了来自 Google Guava 的 Resources 类加载 XML。完成这一步后,该方法就准备好执行测试了。首先,该测试会检查从 XML 文件加载的每个组都不是空的。接下来,执行同样的检查,以验证每个组都包含运动员,而且已加载的每个组中的运动员数量为 3。完成验证后,执行一次复合测试。使用上述函数对组 1 和组 2 的运动员列表执行转换,以便将运动员对象转换为每位运动员的 playerID。完成这一步后,单元测试框架会验证运动员 ID 列表是否等同于预期的集合。因为使用了 containsInAnyOrder 方法,所以不要求运动员按任何特定顺序进行排列。
清单 12.测试代码1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
| @Test
public void testFromInputSupplier() throws Exception {
EntityManager manager = getEntityManager();
Site site = Sites.loadSite(manager, "masters", 2013);
URL group = Resources.getResource("featuredGroup.xml");
ImmutableList<FeaturedGroup> groups = XMLFeaturedGroups
.fromInputSupplier(manager, site, Resources.asByteSource(group));
FeaturedGroup group1 = groups.get(0);
FeaturedGroup group2 = groups.get(1);
assertThat(group1, notNullValue());
assertThat(group2, notNullValue());
assertThat(group1.getPlayers(), notNullValue());
assertThat(group2.getPlayers(), notNullValue());
assertThat(group1.getPlayers().size(), is(3));
assertThat(group2.getPlayers().size(), is(3));
assertThat(Lists.transform(group1.getPlayers(), playerIDFunction),
containsInAnyOrder("20396", "1810", "10885"));
assertThat(Lists.transform(group2.getPlayers(), playerIDFunction),
containsInAnyOrder("24357", "8793", "20229"));
|
|
|
|
|
|
|