great stuff
I haven’t checked it out yet but we really do need a better (and more officially supported) package than TestUtils IMHO.
Is GLU even in JOGL? I don’t think we should use it even if we could because, as you said, it ties you more to the underlying API.
Personally, I like the idea of having individual classes. It makes the code more clear in meaning, and you can have nicly defined (as in javadoc) relationships like Cube extends Rectangle 
Is Geometry the best class for the primitive methods to return do you think? I think Shape3D might make more sense to a newbie, as it removes having to create a Shape3D passing the Geometry. And getting the geometry is only a single call away anyway (as is setting a custom appearence). If we had a class for each primitive that extended Shape3D (or another primitive) - that makes a lot of sense IMHO.
For example:
TransformGroup tg = new TransformGroup();
tg.addChild(new Cube(4f));
is a bit nicer than what we currenlty have:
TransformGroup tg = new TransformGroup();
tg.addChild(new Shape3D(TestUtils.createCubeViaTriangles(4,3,0,0,true,true)));
Using the javax.vecmath classes to specify the location and the likes is also better - as: new Cube (4, new Vector3f(1f,1f,1f)) is a bit more meaningfull than new Cube (4,1,1,1).
If we do go with this way then I think a package for the primitives would be best suited - com.xith3d.primitives.
Once this code is more or less complete, I’ll commit it in.
Cheers,
Will.
edit: btw - I’m glad you started this topic as I was just about to bring this issue up myself