【问题标题】:Cannot run script for building ant projects无法运行用于构建 ant 项目的脚本
【发布时间】:2020-02-11 03:51:25
【问题描述】:

我正在尝试编写一个脚本,该脚本将通过 ant project builder 构建一个项目。

测试运行没有问题。用户类也很好。但是当我运行 build.xml 时,我得到了这些错误。

我将在此处添加该类的 User-class 和 UserTest。

谁能解释这段代码有什么问题?

Buildfile: /home/alexandr/eclipse-workspace/usermanagement/build.xml
clean:
   [delete] Deleting directory /home/alexandr/eclipse-workspace/usermanagement/bin
init:
    [mkdir] Created dir: /home/alexandr/eclipse-workspace/usermanagement/bin
compile:
    [javac] /home/alexandr/eclipse-workspace/usermanagement/build.xml:19: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
    [javac] Compiling 1 source file to /home/alexandr/eclipse-workspace/usermanagement/bin
test-compile:
    [javac] /home/alexandr/eclipse-workspace/usermanagement/build.xml:37: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
    [javac] Compiling 1 source file to /home/alexandr/eclipse-workspace/usermanagement/bin
    [javac] /home/alexandr/eclipse-workspace/usermanagement/src/test/java/ua/nure/kn/susidskyi/usermanagement/UserTest.java:7: error: package org.junit.jupiter.api does not exist
    [javac] import org.junit.jupiter.api.BeforeEach;
    [javac]                             ^
    [javac] /home/alexandr/eclipse-workspace/usermanagement/src/test/java/ua/nure/kn/susidskyi/usermanagement/UserTest.java:8: error: package org.junit.jupiter.api does not exist
    [javac] import org.junit.jupiter.api.Test;
    [javac]                             ^
    [javac] /home/alexandr/eclipse-workspace/usermanagement/src/test/java/ua/nure/kn/susidskyi/usermanagement/UserTest.java:10: error: package junit.framework does not exist
    [javac] import junit.framework.TestCase;
    [javac]                       ^
    [javac] /home/alexandr/eclipse-workspace/usermanagement/src/test/java/ua/nure/kn/susidskyi/usermanagement/UserTest.java:12: error: cannot find symbol
    [javac] public class UserTest extends TestCase {
    [javac]                               ^
    [javac]   symbol: class TestCase
    [javac] /home/alexandr/eclipse-workspace/usermanagement/src/test/java/ua/nure/kn/susidskyi/usermanagement/UserTest.java:15: error: cannot find symbol
    [javac]     @BeforeEach
    [javac]      ^
    [javac]   symbol:   class BeforeEach
    [javac]   location: class UserTest
    [javac] /home/alexandr/eclipse-workspace/usermanagement/src/test/java/ua/nure/kn/susidskyi/usermanagement/UserTest.java:17: error: cannot find symbol
    [javac]         super.setUp();
    [javac]         ^
    [javac]   symbol:   variable super
    [javac]   location: class UserTest
    [javac] /home/alexandr/eclipse-workspace/usermanagement/src/test/java/ua/nure/kn/susidskyi/usermanagement/UserTest.java:22: error: cannot find symbol
    [javac]         assertEquals("Соседский Александр", user.getFullName());
    [javac]         ^
    [javac]   symbol:   method assertEquals(String,String)
    [javac]   location: class UserTest
    [javac] /home/alexandr/eclipse-workspace/usermanagement/src/test/java/ua/nure/kn/susidskyi/usermanagement/UserTest.java:26: error: cannot find symbol
    [javac]         assertEquals(19, user.getAge());
    [javac]         ^
    [javac]   symbol:   method assertEquals(int,int)
    [javac]   location: class UserTest
    [javac] /home/alexandr/eclipse-workspace/usermanagement/src/test/java/ua/nure/kn/susidskyi/usermanagement/UserTest.java:33: error: cannot find symbol
    [javac]         assertEquals(0, user.getAge());
    [javac]         ^
    [javac]   symbol:   method assertEquals(int,int)
    [javac]   location: class UserTest
    [javac] /home/alexandr/eclipse-workspace/usermanagement/src/test/java/ua/nure/kn/susidskyi/usermanagement/UserTest.java:41: error: cannot find symbol
    [javac]         assertEquals(-1, user.getAge());
    [javac]         ^
    [javac]   symbol:   method assertEquals(int,int)
    [javac]   location: class UserTest
    [javac] /home/alexandr/eclipse-workspace/usermanagement/src/test/java/ua/nure/kn/susidskyi/usermanagement/UserTest.java:49: error: cannot find symbol
    [javac]         assertEquals(0, user.getAge());
    [javac]         ^
    [javac]   symbol:   method assertEquals(int,int)
    [javac]   location: class UserTest
    [javac] /home/alexandr/eclipse-workspace/usermanagement/src/test/java/ua/nure/kn/susidskyi/usermanagement/UserTest.java:57: error: cannot find symbol
    [javac]         assertEquals(0, user.getAge());
    [javac]         ^
    [javac]   symbol:   method assertEquals(int,int)
    [javac]   location: class UserTest
    [javac] 12 errors

BUILD FAILED
/home/alexandr/eclipse-workspace/usermanagement/build.xml:37: Compile failed; see the compiler error output for details.

Total time: 3 seconds

build.xml

<?xml version="1.0" encoding="UTF-8"?>

<project name="usermanagement" basedir="." default="test">

  <property name="test-java-dir" value="${basedir}/src/test/java" />
  <property name="main-java-dir" value="${basedir}/src/main/java" />
  <property name="build-dir" value="${basedir}/bin" />
  <property name="lib-dir" value="${basedir}/lib" />

      <target name="clean">
        <delete dir="${build-dir}" />
      </target>

      <target name="init" depends="clean">
        <mkdir dir="${build-dir}" />
      </target>

      <target name="compile" depends="init">
        <javac srcdir="${main-java-dir}" destdir="${build-dir}"/>
      </target>

  <target name="test" depends="test-compile, compile" description="description">
    <junit>
      <classpath>
        <pathelement location="${build-dir}" />
        <fileset dir="${lib-dir}">
          <include name="**/junit.jar" />
        </fileset>
      </classpath>
      <test name="ua.nure.kn.susidskyi.usermanagement.UserTest" />
      <formatter type="plain" />
    </junit>
  </target>


  <target name="test-compile" depends="compile">
    <javac srcdir="${test-java-dir}" destdir="${build-dir}">
      <classpath>
        <path id="org.junit" location="${lib-dir}/junit.jar" />
      </classpath>
    </javac>
  </target>

</project>

用户类

package ua.nure.kn.susidskyi.usermanagement;

import java.util.Date;
import java.io.Serializable;
import java.util.Calendar;

public class User implements Serializable{
    private static final long serialVersionUID = -112812758632339479L;
    private Long id;
    private String firstName;
    private String lastName;
    private Date dateOfBirth;

    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public String getFirstName() {
        return firstName;
    }
    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }
    public String getLastName() {
        return lastName;
    }
    public void setLastName(String lastName) {
        this.lastName = lastName;
    }
    public Date getDateOfBirth() {
        return dateOfBirth;
    }
    public void setDateOfBirth(Date dateOfBirth) {
        this.dateOfBirth = dateOfBirth;
    }

    public User(Long id, String firstName, String lastName, Date dateOfBirth) {
        super();
        this.id = id;
        this.firstName = firstName;
        this.lastName = lastName;
        this.dateOfBirth = dateOfBirth;
    }

    public String getFullName() {
        return getLastName() + " " + getFirstName();
    }   
    public int getAge() {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(new Date());
        int currentYear = calendar.get(Calendar.YEAR);
        int currentDay = calendar.get(Calendar.DAY_OF_MONTH);
        int currentMonth = calendar.get(Calendar.MONTH);
        calendar.setTime(getDateOfBirth());
        int birthYear = calendar.get(Calendar.YEAR);
        int birthDay = calendar.get(Calendar.DAY_OF_MONTH);
        int birthMonth = calendar.get(Calendar.MONTH);
        int age = currentYear - birthYear;
        if ((currentMonth == birthMonth && currentDay < birthDay) || currentMonth <  birthMonth ) {
            return age;
        }   
        else if(currentDay == birthDay && currentMonth == birthMonth) {
            return age;
        }
        else if(currentYear < birthYear || (currentYear == birthYear && birthMonth > currentMonth) || 
                (currentYear == birthYear && birthMonth == currentMonth && birthDay > currentDay)) {
            return -age;
        }
        else {
            return age;
        }       
     }
}

UserTest 用于用户类

package ua.nure.kn.susidskyi.usermanagement;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

import junit.framework.TestCase;

public class UserTest extends TestCase {

    private User user;
    @BeforeEach
    protected void setUp() throws Exception {
        super.setUp();
        user = new User(1L, "Александр", "Соседский", new SimpleDateFormat("d-MM-yyyy").parse("11-09-2000"));
    }

    public void testGetFullName() {
        assertEquals("Соседский Александр", user.getFullName());
    }

    public void testGetAge() {
        assertEquals(19, user.getAge());
    }

    public void testGetAgeBirthdayToday() {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(new Date());
        user.setDateOfBirth(calendar.getTime());
        assertEquals(0, user.getAge());
    }

    public void testGetAgeBirthdayLater() {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(new Date());
        calendar.add(Calendar.YEAR, 1);
        user.setDateOfBirth(calendar.getTime());
        assertEquals(-1, user.getAge());
    }

    public void testGetAgeThisMonthEarlier() {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(new Date());
        calendar.add(Calendar.DATE, -2);
        user.setDateOfBirth(calendar.getTime());
        assertEquals(0, user.getAge());
    }

    public void testGetAgeDayThisMonthLater() {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(new Date());
        calendar.add(Calendar.DATE, 2);
        user.setDateOfBirth(calendar.getTime());
        assertEquals(0, user.getAge());
    }
}

【问题讨论】:

  • 您的javac 任务必须指定类路径以搜索所有这些导入。

标签: java eclipse ant


【解决方案1】:

您正在尝试使用 JUnit Jupiter API 中的类,但您只在类路径中包含了普通的 JUnit jar。

你可以在这里找到你需要的罐子:https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api

然后你可以将它包含在你的测试编译中:

<target name="test-compile" depends="compile">
  <javac srcdir="${test-java-dir}" destdir="${build-dir}">
    <classpath>
      <path location="${lib-dir}/junit.jar" />
      <path location="${lib-dir}/junit-jupiter-api.jar" />
    </classpath>
  </javac>
</target>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-12
    • 1970-01-01
    • 2011-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多