Roo生成的测试代码不会为int @Id变量编译

时间:2014-07-24 20:40:07

标签: spring-roo

我创建了一个非常简单的Spring Roo 1.2.5项目,其中包含一个实体类MyEntity,它有一些字符串变量。

我添加了

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;

到MyEntity.java创建一个主键,并生成Spring Roo

@Test
public void MyEntityIntegrationTest.testFindMyEntity() {
    MyEntity obj = dod.getRandomMyEntity();
    Assert.assertNotNull("Data on demand for 'MyEntity' failed to initialize correctly", obj);
    Integer id = obj.getPrimaryKey();
    Assert.assertNotNull("Data on demand for 'MyEntity' failed to provide an identifier", id);
    obj = MyEntity.findMyEntity(id);
    Assert.assertNotNull("Find method for 'MyEntity' illegally returned null for id '" + id + "'", obj);
    Assert.assertEquals("Find method for 'MyEntity' returned the incorrect identifier", id, obj.getPrimaryKey());
}
MyEntityIntegrationTest_Roo_IntegrationTest.aj文件中的

。但是有两个问题:

1)类型是int,那么为什么Roo将它分配给Integer,然后测试null?如果类型为int,则结果不能为null

2)最终断言无法编译,因为JDK 6编译器无法解析assertEquals(Integer,int)的类型:

The method assertEquals(String, Object, Object) is ambiguous for the type Assert    MyEntityIntegrationTest_Roo_IntegrationTest.aj  /mu/src/test/java/com/sas/mu    line 47 Java Problem

我可以"修复"这是我将字段更改为Integer或Long但@Id表示原语 是允许的。

我怀疑这是一个Roo 1.2.5错误吗?有修复吗?

1 个答案:

答案 0 :(得分:1)

我认为这是一个Spring Roo错误,因此,您可以在Spring Roo Jira上创建请求。

要在项目中修复它,虽然bug没有解决,但您可以推送testFindMyEntity方法来测试类并手动修复代码。 Spring Roo不会在.aj文件中再次生成它。