无法在randoop中设置类路径的包名称

时间:2017-07-24 12:08:45

标签: ubuntu-16.04 randoop

这里是在成功编译Ubuntu后从github克隆的项目结构,

javaml 
     bin
       net/sf/javaml/core/Dataset.class
javaml
     src
      net/sf/javaml/core/Dataset.java

当给出以下命令时:

java -ea -classpath /home/shahid/git/javaml/bin:/home/shahid/a_f_w/randoop-3.1.5/randoop-all-3.1.5.jar  randoop.main.Main gentests --testclass=net.sf.javaml.core.Dataset --literals-file=CLASSES

它生成了错误:"忽略通过--classlist或--testclass指定的接口net.sf.javaml.core.Dataset。 没有要测试的课程 "

而另一个命令

java -ea -classpath /home/shahid/git/java-ml/bin:/home/shahid/a_f_w/randoop-3.1.5/randoop-all-3.1.5.jar  randoop.main.Main gentests --testclass=DataSet --literals-file=CLASSES
没有其他项目的包工作​​完美。 任何帮助都会有所帮助。

2 个答案:

答案 0 :(得分:1)

错误消息为您提供答案:

  

忽略通过--classlist或--testclass指定的接口net.sf.javaml.core.Dataset。没有要测试的课程

您应该为Function IsRef(i As Integer, nextrow As Integer)命令行参数提供类而不是接口。

通过将--testclass传递给Randoop,您表示您只希望Randoop创建--testclass=net.sf.javaml.core.Dataset类型的对象。但是,由于这是一个接口,因此无法实例化,并且Randoop无法创建任何对象,也无法进行任何测试。

答案 1 :(得分:0)

以下命令对我有用:

#include <exception>
#include <tuple>
#include <type_traits>
#include <map>

enum libusb_error {
    LIBUSB_SUCCESS,
    LIBUSB_ERROR_IO,
    LIBUSB_ERROR_INVALID_PARAM,
    LIBUSB_ERROR_ACCESS,
    LIBUSB_ERROR_NO_DEVICE,
    LIBUSB_ERROR_NOT_FOUND,
    LIBUSB_ERROR_BUSY,
    LIBUSB_ERROR_TIMEOUT,
    LIBUSB_ERROR_OVERFLOW,
    LIBUSB_ERROR_PIPE,
    LIBUSB_ERROR_INTERRUPTED,
    LIBUSB_ERROR_NO_MEM,
    LIBUSB_ERROR_NOT_SUPPORTED,
    LIBUSB_ERROR_OTHER
};

const char *libusb_strerror(libusb_error error) {
    if (LIBUSB_ERROR_IO)
        return "LIBUSB_ERROR_IO";
    if (LIBUSB_ERROR_INVALID_PARAM)
        return "LIBUSB_ERROR_INVALID_PARAM";
}

class generic_error {
public:
    virtual const char* what() const throw() = 0;
    virtual void do_throw() const = 0;
};

template<libusb_error error>
class LIBUSBError : public generic_error {
public:
    virtual const char* what() const throw() {
        return libusb_strerror(error);
    }
    virtual void do_throw() const {
        throw *this;
    }

};

template <class SupportedErrors = std::tuple<std::integral_constant<libusb_error, LIBUSB_ERROR_IO>, std::integral_constant<libusb_error, LIBUSB_ERROR_INVALID_PARAM>>>
struct ErrorMap;

template <libusb_error... Es>
struct ErrorMap<std::tuple<std::integral_constant<libusb_error, Es>...>>{
    static std::map<libusb_error, generic_error*> em;
};

template <libusb_error... Es>
std::map<libusb_error, generic_error*> ErrorMap<std::tuple<std::integral_constant<libusb_error, Es>...>>::em = {{Es, new LIBUSBError<Es>{}}...};



libusb_error known_at_runtime() {
    return LIBUSB_ERROR_IO;
}

int main() {
    try {
        ErrorMap<>::em[known_at_runtime()]->do_throw();
    } catch (LIBUSBError<LIBUSB_ERROR_IO>&) {
    }
}

@mernst感谢您的回复。