Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 重启:我可以在配置类中指定oauth设置吗?_Java_Oauth_Rest Assured - Fatal编程技术网

Java 重启:我可以在配置类中指定oauth设置吗?

Java 重启:我可以在配置类中指定oauth设置吗?,java,oauth,rest-assured,Java,Oauth,Rest Assured,我正在使用java中的RestAssured库 我有以下配置类: import io.restassured.RestAssured; import org.junit.BeforeClass; import static io.restassured.RestAssured.given; public class TestConfig { @BeforeClass public static v

我正在使用java中的RestAssured库

我有以下配置类:

        import io.restassured.RestAssured;
        import org.junit.BeforeClass;
        import static io.restassured.RestAssured.given;

        public class TestConfig {

        @BeforeClass
        public static void setup(){

            APICredentials ac = new APICredentials();
            RestAssured.baseURI = "https://api.twitter.com";
            RestAssured.basePath = "/1.1/";
            }
        }
    import org.junit.Test;
    import static io.restassured.RestAssured.*;
    import static org.hamcrest.CoreMatchers.equalTo;

    public class MyFirstTest extends TestConfig{

        @Test
        public void getUserInfo() {
            APICredentials ac = new APICredentials();
            given().
                    log().all().
                    auth().oauth(ac.getConsumer_key(),ac.getConsumer_secret(),ac.getAccess_token(),ac.getToken_secret()).
            when().
                    get("/users/show.json?screen_name=DexisKenway").then().statusCode(200);
        }

    }
然后我有一个从config类继承的测试类:

        import io.restassured.RestAssured;
        import org.junit.BeforeClass;
        import static io.restassured.RestAssured.given;

        public class TestConfig {

        @BeforeClass
        public static void setup(){

            APICredentials ac = new APICredentials();
            RestAssured.baseURI = "https://api.twitter.com";
            RestAssured.basePath = "/1.1/";
            }
        }
    import org.junit.Test;
    import static io.restassured.RestAssured.*;
    import static org.hamcrest.CoreMatchers.equalTo;

    public class MyFirstTest extends TestConfig{

        @Test
        public void getUserInfo() {
            APICredentials ac = new APICredentials();
            given().
                    log().all().
                    auth().oauth(ac.getConsumer_key(),ac.getConsumer_secret(),ac.getAccess_token(),ac.getToken_secret()).
            when().
                    get("/users/show.json?screen_name=DexisKenway").then().statusCode(200);
        }

    }
这个测试很有效。但是,我必须在每个测试中重复下面的代码


    APICredentials ac = new APICredentials();
            given().
                    log().all().
                    auth().oauth(ac.getConsumer_key(),ac.getConsumer_secret(),ac.getAccess_token(),ac.getToken_secret()).

我正在寻找一种解决方案,将身份验证部分添加到TestConfig类中,这样,我就不必每次重复代码了以下是我的解决方案:

@BeforeClass
public static void setup(){

    APICredentials ac = new APICredentials();
    RestAssured.baseURI = "https://api.twitter.com";
    RestAssured.basePath = "/1.1/";
    RestAssured.given().
                        log().all().
                        auth().oauth(ac.getConsumer_key(),ac.getConsumer_secret(),ac.getAccess_token(),ac.getToken_secret());

}

但是,然后我的请求失败,代码为400

请尝试使用以下代码:

import io.restassured.builder.RequestSpecBuilder;
import io.restassured.specification.RequestSpecification;
import org.junit.BeforeClass;

public class TestConfig {

    @BeforeClass
    public static void setup(){

        APICredentials ac = new APICredentials();


        RequestSpecification requestSpecification = new RequestSpecBuilder()
                .setBaseUri("https://api.twitter.com")
                .setBasePath("/1.1/")
                .addHeader("Content-Type","application/json")
                .addHeader("Accept","application/json")
                .addFilter(new RequestLoggingFilter())
                .addFilter(new ResponseLoggingFilter())
                .build();
        requestSpecification.auth().oauth(ac.getConsumer_key(),ac.getConsumer_secret(),ac.getAccess_token(),ac.getToken_secret());
        RestAssured.requestSpecification = requestSpecification;




    }
}


我希望它能解决您的问题

如何将
oauth
添加到
requestSpecification
?我已根据您的建议更新了答案,谢谢@Jeff