Skip to content

Latest commit

 

History

History
49 lines (37 loc) · 1.35 KB

testing_assertions.md

File metadata and controls

49 lines (37 loc) · 1.35 KB
title tags keywords
Testing Spoon Transformations
assert
assertions
testing, assert, assertion

Spoon provides a way to test transformations as follows.

import static spoon.testing.Assert.assertThat;
...
assertThat('Foo.java').withProcessor(new AProcessor()).isEqualTo('FooTransformed.java');

Assertion Types

There are three types of assertions:

Assert type Description
FileAssert Assertions available on a file.
CtElementAssert Assertions available on a CtElement.
CtPackageAssert Assertions available between two CtPackage.

CtElement assertion example

Let's say that you have a processor which change the name of all fields by the name "j".

class MyProcessor extends AbstractProcessor<CtField<?>> {
	@Override
	public void process(CtField<?> element) {
		element.setSimpleName("j");
	}
}

To check that the transformation is well done when you apply it on a class, see the following example

final SpoonAPI spoon = new Launcher();
spoon.addInputResource("path/of/my/file/Foo.java");
spoon.run();

final CtType<Foo> type = spoon.getFactory().Type().get(Foo.class);
assertThat(type.getField("i")).withProcessor(new MyProcessor()).isEqualTo("public int j;");

Note that, method withProcessor takes as parameter either with a processor instance, a processor class name, a class object.