ทำ maven plugin ขึ้นมาเพื่อให้ทีมฯใช้งาน เราก็จะเขียน test plugin ของเราด้วย
link นี้ข้อมูลเก่า ไม่เห็นใครใน github เขียนแบบที่แนะนำเอาไว้เลย...ข้ามไป
https://cwiki.apache.org/confluence/display/MAVENOLD/Maven+Plugin+Harness
link ที่ได้มาจากหน้าแรกของการ googling คือ Cookbook: How To Use Maven Plugin Testing Harness? ข้อมูลยังใหม่อยู่ จะเห็นว่าอัพเดตเมื่อปี 2014 นี่เอง ผมก็ทำตามที่เค้าแนะนำ คือ
1. ให้ใช้ plugin ตัวนี้ maven-plugin-testing-harness
<project>
...
<dependencies>
<dependency>
<groupId>org.apache.maven.plugin-testing</groupId>
<artifactId>maven-plugin-testing-harness</artifactId>
<scope>test</scope>
</dependency>
...
</dependencies>
...
</project>
2. เขียน test class ขึ้นมา ซึ่งเราต้อง extends AbstractMojoTestCase และใน class ต้อง override setUp() ด้วย, มี method สำหรับ test class ของเรา ในเอกสารมันก็บอกแค่นี้
public class MyMojoTest
extends AbstractMojoTestCase
{
...
protected void setUp()
throws Exception
{
// required
super.setUp();
...
}
...
public void testSomething()
throws Exception
{
...
}
...
}
3. สร้าง pom สำหรับ test, แก้ไข pom ของ plugin project
4. ทดลองสั่ง
$mvn clean test
มึน!ครับ ได้ Exception แบบนี้
...
org.codehaus.plexus.component.repository.exception.ComponentLookupException: java.util.NoSuchElementException
role: org.apache.maven.repository.RepositorySystem
roleHint:
at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:257)
at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:245)
at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:239)
at org.codehaus.plexus.PlexusTestCase.lookup(PlexusTestCase.java:206)
at org.apache.maven.plugin.testing.AbstractMojoTestCase.setUp(AbstractMojoTestCase.java:126)
...
คือตามที่ทำตัวหน้า แค่เรียกตัว method setup ก็พังแล้ว -_-"
นั่งงมอยู่นานครับ ทำไมๆๆ ไม่อยากให้เสียเวลาเหมือนกับผม จึงมาเขียนเอาไว้ครับ เราจะต้องเพิ่ม dependency อีกหนึ่งตัวสำหรับการ test นี้ maven-compat;ที่ทำตัวหนาไว้
...
<dependency>
<groupId>org.apache.maven.plugin-testing</groupId>
<artifactId>maven-plugin-testing-harness</artifactId>
<version>3.1.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-compat</artifactId>
<version>3.1.1</version>
</dependency>
...
ส่วน dependecy junit ผมเลือกใช้ version 4.10 มันมี warning บอกให้ใช้ version ที่ใหม่กว่านี้ ก็เลยเปลี่ยนซะ
เพิ่ม depency maven-compat แล้ว ก็ไปต่อได้แล้วครับ มันจะวิ่งเข้า test method เราแล้ว
สมัครสมาชิก:
ส่งความคิดเห็น
(
Atom
)
ไม่มีความคิดเห็น :
แสดงความคิดเห็น