Gradle任务检查是否定义了属性

时间:2015-07-08 19:42:34

标签: properties gradle task testng

我有一个执行testng测试套件的gradle任务。 我希望能够将一个标志传递给任务,以便使用特殊的testng xml套件文件(或者如果没有设置标志,则只使用默认套件)。

gradle test

应该运行默认的标准测试套件

gradle test -Pspecial

应该运行特殊的测试套件

我一直在尝试这样的事情:

test {
    if (special) {
        test(testng_special.xml);
    }
    else {
        test(testng_default.xml);
    }
}

但是我收到了一个未定义的属性错误。什么是正确的方法?

3 个答案:

答案 0 :(得分:61)

$q = "UPDATE cats SET cat_name='$cat_name', cat_color='$cat_color', cat_icon='$cat_icon'  WHERE cat_id='$cat_id'";

应该这样做。

请注意,您选择testng套件所做的工作不会起作用,AFAIK:测试任务没有任何#include <unistd.h> #include <fcntl.h> #include <termios.h> #include <errno.h> #include <stdio.h> #include <string.h> int fd; //file descriptor int bytes; // bytes to read int PortOpen(void) { fd = open("/dev/ttyUSB1", O_RDWR | O_NOCTTY | O_NDELAY); if(fd < 0) { //opening error printf("Port opening error\r\n"); } else { printf("Port opened\r\n"); //port config struct termios options; tcgetattr(fd, &options); cfsetispeed(&options, B9600); cfsetospeed(&options, B9600); options.c_cflag &= ~PARENB; options.c_cflag &= ~CSTOPB; options.c_cflag &= ~CSIZE; options.c_cflag |= CS8; options.c_cflag |= CLOCAL; options.c_cflag |= CREAD; options.c_cflag &= ~CRTSCTS; options.c_cc[VMIN] = 0; options.c_cc[VTIME] = 5; options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG); //Modifying c_iflag by bitwise OR and AND options.c_iflag &= ~(ICRNL | INLCR | IGNCR | IUCLC); options.c_iflag &= ~(IXON | IXOFF | IXANY); //Modifying c_oflag by bitwise OR and AND options.c_oflag &= ~OPOST; tcflush(fd, TCIFLUSH); //Setting the new settings for the port immediately tcsetattr(fd, TCSANOW, &options); } return 1; } int PortRead(void) { int n = 0, spot = 0; char buf = '\0'; /* Whole response*/ char response[1024]; memset(response, '\0', sizeof response); do { n = read( fd, &buf, 1 ); sprintf( &response[spot], "%c", buf ); spot += n; } while( buf != '\r' && n > 0); if (n < 0) { printf("Error reading: %s\r\n",strerror(errno)); } else if (n == 0) { printf("Read nothing!\r\n"); } else { printf("Response: %s", response); } return 1; } int main(void) { PortOpen(); int j; for(j=0; j<100; j++) //just testing { PortRead(); } return 0; } 方法。有关工作示例,请参阅https://discuss.gradle.org/t/how-to-run-acceptance-tests-with-testng-from-gradle/4107

if (project.hasProperty('special'))

答案 1 :(得分:0)

这对我有用:

test {
    if (properties.containsKey('special')) {
        test(testng_special.xml);
    }
    else {
        test(testng_default.xml);
    }
}

答案 2 :(得分:-1)

来自Gradle Documentation

  

-P, - project-prop

     

设置根项目的项目属性,例如-Pmyprop = myvalue

所以你应该使用:

gradle test -Pspecial=true

在属性名称后面加上值