内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

Android單元測(cè)試,使用ThreadingTest進(jìn)行全新體驗(yàn)

Android單元測(cè)試,使用ThreadingTest進(jìn)行全新體驗(yàn)

站在用戶的角度思考問(wèn)題,與客戶深入溝通,找到保德網(wǎng)站設(shè)計(jì)與保德網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站制作、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名注冊(cè)、虛擬空間、企業(yè)郵箱。業(yè)務(wù)覆蓋保德地區(qū)。

1、 背景

長(zhǎng)期以來(lái),軟件測(cè)試工程師都在如何提高軟件系統(tǒng)質(zhì)量和如何提高測(cè)試效率的道路上艱難地探索,但始終沒(méi)有一款性能全面的測(cè)試工具可以滿足需求。

ThreadingTest智能型測(cè)試工具系列一期,是基于程序源代碼的白盒測(cè)試工具。采取前端分析器和后端結(jié)果分析分離的技術(shù)路線,實(shí)現(xiàn)對(duì)多種語(yǔ)言的編譯器級(jí)分析和多維度測(cè)試。

ThreadingTest通過(guò)一系列自動(dòng)、高效、可視化技術(shù),使軟件維護(hù)與開發(fā)效率加倍、成本減半、系統(tǒng)軟件質(zhì)量提高幾個(gè)數(shù)量級(jí)。

ThreadingTest采用離線分析操作,即使電腦脫離互聯(lián)網(wǎng)也可以獲得同樣的體驗(yàn),保障代碼的安全。

2、 ThreadingTestAndroid JUnit Test單元測(cè)試

ThreadingTest AndroidJUnit Test是基于Android JUnit Test,利用ThreadingTest本身的優(yōu)勢(shì),編寫的一套單元測(cè)試組件。在原有的Android JUnit Test測(cè)試驅(qū)動(dòng)代碼的基礎(chǔ)上,只需要進(jìn)行很小的改動(dòng),就可以修改為符合ThreadingTest Android JUnit Test測(cè)試代碼的單元測(cè)試。除此之外,兩者的測(cè)試幾乎沒(méi)有差別,只需要您在測(cè)試時(shí),打開TT實(shí)時(shí)監(jiān)控來(lái)接收數(shù)據(jù),而在測(cè)試過(guò)程中,則無(wú)需其他操作,甚至感覺(jué)不到數(shù)據(jù)的收集過(guò)程。

對(duì)于傳統(tǒng)的單元測(cè)試,在單元測(cè)試結(jié)束后,測(cè)試人員只能獲得測(cè)試結(jié)果是否符合預(yù)期結(jié)果。如果與預(yù)期結(jié)果存在差異,也無(wú)法立即得到錯(cuò)誤原因。

當(dāng)使用ThreadingTest AndroidJUnit Test進(jìn)行單元測(cè)試時(shí),還是相同的測(cè)試體驗(yàn),卻能夠得到白盒測(cè)試的數(shù)據(jù),當(dāng)單元執(zhí)行結(jié)束后,可以根據(jù)產(chǎn)生的數(shù)據(jù)來(lái)分析程序的出錯(cuò)點(diǎn),使Bug的查找更快速,更準(zhǔn)確,而為此付出最小的代價(jià)。

3、 Android單元測(cè)試的編寫

Android單元測(cè)試有兩種方法,首先作為java程序,可以試用JUnit Test進(jìn)行測(cè)試,另外也可使用Android JUnit Test進(jìn)行單元測(cè)試。

1)、JUnit Test進(jìn)行單元測(cè)試

JUnit對(duì)Android應(yīng)用程序進(jìn)行單元測(cè)試需要使用Java命令來(lái)啟動(dòng)或者在eclipse里面將啟動(dòng)的Bootstrap Entries改為JRE,但是這種只能測(cè)試邏輯代碼,因?yàn)槭鞘沁\(yùn)行在JVM上,而不是Android系統(tǒng)中,所以不能測(cè)試Android有關(guān)的代碼。

使用JUnit測(cè)試的代碼,需要在函數(shù)的之前加@Test,函數(shù)必須為public類型,在eclipse中,在類上右擊,選擇JUnit Test即可進(jìn)行測(cè)試。

2)Android JUnit Test進(jìn)行單元測(cè)試

Android JUnit Test單元測(cè)試是一組直接或間接繼承自junit.framework.Testcase的類集合,入口是InstrumentationTestRunner。

使用Android JUnit Test測(cè)試,也存在兩種測(cè)試方法,測(cè)試驅(qū)動(dòng)與測(cè)試代碼在同一工程下和測(cè)試驅(qū)動(dòng)和測(cè)試代碼位于不同工程,兩者之間并無(wú)巨大差異,只是在測(cè)試時(shí),前者只安裝一個(gè)App,后者安裝兩個(gè)App。

如下為一個(gè)單元測(cè)試的實(shí)例:

步驟 1:準(zhǔn)備好需要測(cè)試的源代碼

步驟2:添加測(cè)試類,編寫測(cè)試代碼

 

package  calculator.xwg.test;

 

import  java.util.ArrayList;

import java.util.LinkedList;

import  android.test.ActivityInstrumentationTestCase2;

import  android.app.AlertDialog;

import  android.app.Instrumentation;

import  android.widget.Button;

import  android.widget.ListView;

import  android.widget.TextView;

import calculator.xwg.CalculatorMainActivity;

 

publicclass  CalculatorMainActivityTestextends

          ActivityInstrumentationTestCase2<CalculatorMainActivity>  {

     private  InstrumentationmInstrumentation;

     private  CalculatorMainActivitymActivity;

     private TextViewmQuestionText;

     private TextViewmAnswerText;

     private ButtonmCalculateButton;

     private ButtonmButton1;

     private ButtonmButtonPlus;

     private ButtonmButtonAngle;

     private ButtonmButtonDegree;

     private ButtonmButtonF6;

    

     class AssertPair{

          public AssertPair(CharSequence  quest, CharSequence res){

                question = quest;

                result = res;

          }

          boolean  assertResult(){

                return (question.toString().compareTo(result.toString())  == 0);

          }

          public CharSequence question;

          public CharSequence result;

     }

    

     ArrayList<AssertPair>  assertList = new  ArrayList<AssertPair>();

     AssertPair  mAssertPair;

     FailureInfo  mFailureInfo;

 

     @SuppressWarnings("deprecation")

     public  CalculatorMainActivityTest() {

          super("calculator.xwg",  CalculatorMainActivity.class);

          //TODO  Auto-generated constructor stub

     }

    

     @Override

     protectedvoid setUp()throws Exception {

          super.setUp();

          mInstrumentation =  getInstrumentation();

          setActivityInitialTouchMode(false);

 

          mActivity =  (CalculatorMainActivity) getActivity();

          mQuestionText = (TextView)mActivity.findViewById(calculator.xwg.R.id.textQuestion);

          mAnswerText = (TextView)mActivity.findViewById(calculator.xwg.R.id.textAnswer);

          mCalculateButton = (Button)mActivity.findViewById(calculator.xwg.R.id.button74);

          mButton1 = (Button)mActivity.findViewById(calculator.xwg.R.id.button60);

          mButtonPlus = (Button)mActivity.findViewById(calculator.xwg.R.id.button63);

          mButtonAngle = (Button)mActivity.findViewById(calculator.xwg.R.id.button03);

          mButtonDegree = (Button)mActivity.findViewById(calculator.xwg.R.id.button02);

          mButtonF6 = (Button)mActivity.findViewById(calculator.xwg.R.id.buttonF6);

         

          mActivity.engine.clearCustomFunctions();

     }  // end of  setUp() method definition

    

     @Override

     protectedvoid tearDown()throws Exception {

          mActivity.engine.clearCustomFunctions();

          super.tearDown();

     }

 

     publicvoid  testPreConditions() {

           //assertTrue(mSpinner.getOnItemSelectedListener()  != null);

           //assertTrue(mPlanetData != null);

           //assertEquals(mPlanetData.getCount(),ADAPTER_COUNT);

     }  // end of  testPreConditions() method definition

      

     publicvoid  testCalculate() {

          LinkedList<AssertPair>  checkItemList =new LinkedList<AssertPair>();

          checkItemList.add(new AssertPair("1-2×((3+4)/58+8)×25%","-3.06034482759"));

          checkItemList.add(new AssertPair("root(16,4)","2"));

          checkItemList.add(new AssertPair("sin(0°)","0"));

          checkItemList.add(new AssertPair("sin(30°)","0.5"));

          checkItemList.add(new AssertPair("sin(390°)","0.5"));

          checkItemList.add(new AssertPair("sin(-330°)","0.5"));

          checkItemList.add(new AssertPair("sin(90°)","1"));

          checkItemList.add(new AssertPair("sin(145°)","0.573576436351"));

          checkItemList.add(new AssertPair("sin(180°)","0"));

          checkItemList.add(new AssertPair("sin(200°)","-0.342020143326"));

          checkItemList.add(new AssertPair("sin(270°)","-1"));

          checkItemList.add(new AssertPair("sin(300°)","-0.866025403784"));

          checkItemList.add(new AssertPair("sin(360°)","0"));

          checkItemList.add(new AssertPair("sin(π/6)","0.5"));

          checkItemList.add(new AssertPair("tan(0)","0"));

          checkItemList.add(new AssertPair("tan(0.2)","0.202710035509"));

          checkItemList.add(new AssertPair("tan(0.4)","0.422793218738"));

          checkItemList.add(new AssertPair("tan(0.6)","0.684136808342"));

          checkItemList.add(new AssertPair("tan(0.8)","1.02963855705"));

          checkItemList.add(new AssertPair("tan(1.0)","1.55740772465"));

          checkItemList.add(new AssertPair("tan(1.2)","2.57215162213"));

          checkItemList.add(new AssertPair("tan(1.4)","5.79788371548"));

          checkItemList.add(new AssertPair("tan(1.8)","-4.28626167463"));

          checkItemList.add(new AssertPair("tan(2.0)","-2.18503986326"));

          checkItemList.add(new AssertPair("tan(2.2)","-1.37382305677"));

          checkItemList.add(new AssertPair("tan(2.4)","-0.916014289673"));

          checkItemList.add(new AssertPair("tan(2.6)","-0.60159661309"));

          checkItemList.add(new AssertPair("tan(2.8)","-0.355529831651"));

          checkItemList.add(new AssertPair("tan(3.0)","-0.142546543074"));

          checkItemList.add(new AssertPair("tan(3.2)","0.0584738544596"));

          checkItemList.add(new AssertPair("tan(π/2)","tan:Invalid  input."));

          checkItemList.add(new AssertPair("tan(π)","0"));

          checkItemList.add(new AssertPair("tan(π/2×3)","tan:Invalid  input."));

          checkItemList.add(new AssertPair("tan(2×π)","0"));

          checkItemList.add(new AssertPair("tan(45°)","1"));

          checkItemList.add(new AssertPair("tan(90°)","tan:Invalid  input."));

          checkItemList.add(new AssertPair("tan(405°)","1"));

          checkItemList.add(new AssertPair("tan(-315°)","1"));

          checkItemList.add(new AssertPair("tan(-675°)","1"));

          checkItemList.add(new AssertPair("1+1","2"));

          checkItemList.add(new AssertPair("(1+2i)×(3-4i)/(5+6i)","1.0983607-0.91803279i"));

         

          for(final AssertPair  pair : checkItemList){

                mActivity.runOnUiThread(

                      new Runnable() {

                           publicvoid run() {

                                 mQuestionText.setText(pair.question);

                                 mActivity.onButtonClick(mCalculateButton);

                           }

                    }

                );

                mInstrumentation.waitForIdleSync();

                assertEquals("The  result of " + pair.question +":", pair.result,mAnswerText.getText());

          }

     }

    

     publicvoid  testConvert() {

          mActivity.runOnUiThread(

                new Runnable() {

                      publicvoid run() {

                           mQuestionText.setText("1-i");

                           mActivity.onButtonClick(mButtonAngle);

                      }

              }

          );

          mInstrumentation.waitForIdleSync();

assertEquals("1.4142136∠5.4977871",mAnswerText.getText());

          mActivity.runOnUiThread(

                      new Runnable() {

                           publicvoid run() {

                                 mQuestionText.setText("1-i");

                                 mActivity.onButtonClick(mButtonDegree);

                           }

                    }

                );

          mInstrumentation.waitForIdleSync();

          assertEquals("1.4142136∠315°",mAnswerText.getText());

     }

    

     publicvoid  testContinue() {

          mActivity.runOnUiThread(

                new Runnable() {

                      publicvoid run() {

                           mQuestionText.setText("1-i");

                           mActivity.onButtonClick(mButtonAngle);

                           assertList.add(new AssertPair("1.4142136∠5.4977871",mAnswerText.getText()));

                           mActivity.onButtonClick(mButtonDegree);

                           assertList.add(new AssertPair("1.4142136∠315°",mAnswerText.getText()));

                      }

              }

          );

          mInstrumentation.waitForIdleSync();

          for(AssertPair  pair :assertList){

                assertEquals(pair.question, pair.result);

          }

          assertList.clear();

     }

    

     publicvoid testCustomFunction()  {

          mActivity.runOnUiThread(

                new Runnable() {

                      publicvoid run() {

                           mActivity.onButtonClick(mButtonF6);

                           mActivity.onButtonClick("5");

                           mActivity.onButtonClick(")");

                           mActivity.onButtonClick("=");

                          

                           mFailureInfo =  FailureInfo.checkFailure("Unknown keyword:F",mAnswerText.getText());

                           if(mFailureInfo !=null)return;

                          

                           mQuestionText.setText("π×#1×#1");

                           mActivity.onButtonClick("FS");

                           TextView  tv = (TextView)mActivity.mDialog.findViewById(calculator.xwg.R.id.inputText);

                           tv.setText("Test");

                           Button  ok = (Button)mActivity.mDialog.findViewById(calculator.xwg.R.id.buttonOK);

                           ok.performClick();

                           ListView  lv = (ListView)((AlertDialog)mActivity.mDialog).getListView();

                           lv.requestFocus();

                           lv.setSelection(5);

                           lv.performItemClick(null, 5, 5);

                          

                           mActivity.onButtonClick(mButtonF6);

                           mActivity.onButtonClick("5");

                           mActivity.onButtonClick(")");

                           mActivity.onButtonClick("=");

                          

                           mFailureInfo =  FailureInfo.checkFailure("78.5398163397",mAnswerText.getText());

                           if(mFailureInfo !=null)return;

                          

                           mActivity.engine.clearCustomFunctions();

                      }

              }

          );

          mInstrumentation.waitForIdleSync();

          if(mFailureInfo !=null){

                assertEquals(mFailureInfo.mExpect,mFailureInfo.mResult);

                mFailureInfo =null;

          }

     }

}

 

   步驟3:修改AndroidManifest.xml文件

 

<?xmlversion="1.0" encoding="utf-8"?>

<manifestxmlns:android="http://schemas.android.com/apk/res/android"

      package="calculator.xwg"

      android:versionCode="1"

      android:versionName="1.0">

     <uses-sdkandroid:minSdkVersion="8" />

     <uses-permissionandroid:name="android.permission.INTERNET"></uses-permission>

 

     <applicationandroid:label="@string/app_name" android:icon="@drawable/calculator">

        <uses-libraryandroid:name="android.test.runner"/>

        <activityandroid:name=".CalculatorMainActivity"

                  android:label="@string/app_name">

            <intent-filter>

                <actionandroid:name="android.intent.action.MAIN" />

                <categoryandroid:name="android.intent.category.LAUNCHER" />

            </intent-filter>

        </activity>

        <activityandroid:name="HelpActivity"></activity>

 

     </application>

 

     <instrumentation

        android:name="android.test.InstrumentationTestRunner"

        android:targetPackage="calculator.xwg" 

        android:label="Tests for TT  calculator."/>

</manifest>

 

注意:綠色背景為添加部分。其中android:label="Testsfor TT calculator."在模擬器中的Dev Tools工具中,設(shè)置Instrumentation下顯示的名稱,在步驟4運(yùn)行中,點(diǎn)擊該標(biāo)簽,也可運(yùn)行單元測(cè)試。在ThreadingTest AndroidJUnit Test中也是重要一步,可以設(shè)置多個(gè)單元,多個(gè)名稱,每個(gè)名稱盡量不要重復(fù),以區(qū)分不同的單元測(cè)試。

步驟4:運(yùn)行測(cè)試類

運(yùn)行測(cè)試類有三種方式,包括:

1、 命令行方式

使用adb命令啟動(dòng)單元測(cè)試

2、 eclipse中選擇Android JUnit Test運(yùn)行方式

在eclipse中,右擊測(cè)試工程,選擇run as -> AndroidJUnit Test

3、 模擬器中,使用Dev Tools

在模擬器中安裝該程序后,在Dev Tools工具中,選擇Instrumentation下顯示的與android:label同名的標(biāo)簽運(yùn)行單元測(cè)試。

 

4、 ThreadingTest單元測(cè)試的編寫

要使用ThreadingTest進(jìn)行單元測(cè)試類的編寫,需要將所有的測(cè)試類寫到一個(gè)單獨(dú)的文件夾下,在進(jìn)行編譯工程時(shí),使用參數(shù)-filter將其從編譯路徑中排除,不對(duì)其進(jìn)行插樁。如下圖所示:

                             

被測(cè)源碼放在src文件夾中,單元測(cè)試驅(qū)動(dòng)代碼放在test_src文件下。

其他方面,需要在Android單元測(cè)試上進(jìn)行的修改為:

1、引入ThreadingTestAndroid jar包,JavaParser-Android.jar和通信包jeromq-0.3.0-SNAPSHOT.jar。

2、將繼承AndroidJUnit Test類換成繼承ThreadingTest Android JUnit Test類,ThreadingTest Android JUnit Test類中與AndroidJUnit Test相對(duì)應(yīng)的類為在類名前加TT。例如與InstrumentationTestCase相對(duì)應(yīng)的類為TTInstrumentationTestCase,TT AndroidJUnit Test類所在的包為com.zoa.android.test。

3、在重載了setUp和tearDown函數(shù)的測(cè)試類中,需要分別調(diào)用super.setUp()和super.tearDown()函數(shù),否則無(wú)法對(duì)數(shù)據(jù)進(jìn)行驚醒測(cè)試用例的區(qū)分,如果沒(méi)無(wú)需進(jìn)行初始化和資源釋放則不用繼承setUp()和tearDown()函數(shù)。

4、其他操作同Android JUnit Test操作相同。

如下為一個(gè)與上面Android JUnitTest單元測(cè)試類相對(duì)應(yīng)的TT Android JUnit Test單元測(cè)試類,添加背景色的為需要注意的點(diǎn),其他的與原測(cè)試代碼相同,無(wú)需改動(dòng):

 

package  calculator.xwg.test;

 

import  java.util.ArrayList;

import  java.util.LinkedList;

import  com.zoa.android.test.TTActivityInstrumentationTestCase2;

import  android.app.AlertDialog;

import  android.app.Instrumentation;

import  android.widget.Button;

import  android.widget.ListView;

import  android.widget.TextView;

import  calculator.xwg.CalculatorMainActivity;

 

publicclass  CalculatorMainActivityTestextends

           TTActivityInstrumentationTestCase2<CalculatorMainActivity>  {

     …//  與上面相同的代碼和描述

    

     @Override

     protectedvoid setUp()throws Exception {

          super.setUp(); //如重寫setUp函數(shù),此句為必須

          …//  與上面相同的代碼和描述

     }  // end of  setUp() method definition

    

     @Override

     protectedvoid tearDown()throws Exception {

          …//  與上面相同的代碼和描述

          super.tearDown(); //如重寫tearDown函數(shù),此句為必須

     }

 

     …//  與上面相同的代碼和描述

}

 

5、 ThreadingTest單元測(cè)試的編譯

編寫完成TT Android JUnitTest 測(cè)試類之后,使用TT對(duì)工程進(jìn)行編譯。

1、修改編譯文件,如果是單一編碼格式的工程,需要修改%TT_Path%/ant-build-a/android-instru_en.xml文件,多種編碼格式源碼的工程,則需要修改%TT_Path%/ant-build-a/android-instru_code_en.xml文件。修改內(nèi)容為,添加-filter參數(shù),修改方法為:

添加filterpath屬性,用于過(guò)濾不需要插樁的單元測(cè)試驅(qū)動(dòng)類文件。

<propertylocation="不需要插樁編譯的路徑,這里為test_src路徑"name="filterpath"/>

<argline="&quot;${propath}&quot; &quot;${TT}&quot; -tt=&quot;${testpropath}&quot;-encoding=${encoding}-filter=&quot;${filterpath}&quot;-s=&quot;${testpropath}/src&quot;"/>

在運(yùn)行JavaParser處,添加綠色背景參數(shù)。

注:demo版本中需手動(dòng)修改,后續(xù)版本將對(duì)此進(jìn)行改進(jìn)。

2、打開TT,創(chuàng)建一個(gè)新的工程,與非單元測(cè)試工程的編譯相同。詳見(jiàn):http://www.threadingtest.com/xwiki/bin/view/ZOA%7C4.演示/Android+程序測(cè)試配置

 

6、 ThreadingTest單元測(cè)試的運(yùn)行

在真機(jī)中測(cè)試時(shí),需要安裝Dev Tools工具。模擬器中附帶該工具。

將上一步中,TT編譯生成的APK文件,安裝到模擬器或真機(jī)中,安裝之后,會(huì)在Dev Tools工具下,Instrumentation中會(huì)出現(xiàn)與AndroidManifest.xml文件中android:label設(shè)置的同名的標(biāo)簽,點(diǎn)擊可運(yùn)行ThreadingTest單元測(cè)試。

在運(yùn)行ThreadingTest單元測(cè)試時(shí),需要打開TT接收數(shù)據(jù),否則測(cè)試會(huì)阻塞在消息發(fā)送處而無(wú)法進(jìn)行。

模擬器測(cè)試步驟為:

1、打開TT,選擇將要運(yùn)行的測(cè)試的工程,然后打開實(shí)時(shí)監(jiān)控界面,新建一個(gè)測(cè)試用例。

 Android單元測(cè)試,使用ThreadingTest進(jìn)行全新體驗(yàn)

會(huì)增加紅色框中的測(cè)試用例,首先是與勾選的測(cè)試用例同級(jí)同名的測(cè)試類型,然后依次為測(cè)試類所在的包名,類名以及運(yùn)行測(cè)試函數(shù)名。

在單元測(cè)試開始之前,被測(cè)程序的初始化數(shù)據(jù)會(huì)被保存在初始勾選的測(cè)試用例中,這里為UnitTest中。單元測(cè)試開始之后,產(chǎn)生的測(cè)試數(shù)據(jù)會(huì)被保存到,與測(cè)試驅(qū)動(dòng)函數(shù)對(duì)應(yīng)的測(cè)試用例當(dāng)中。

TT單元測(cè)試完成。

 

真機(jī)測(cè)試步驟為:

1、打開TT,選擇將要運(yùn)行的測(cè)試的工程,然后打開實(shí)時(shí)監(jiān)控界面,新建一個(gè)測(cè)試用例。

2、勾選上測(cè)試用例,set Ip為真機(jī)的Ip地址,確定后點(diǎn)擊開始。

3、同模擬器測(cè)試步驟5。

 

 

 

 

對(duì)移動(dòng)端白盒測(cè)試技術(shù)或者性能測(cè)試感興趣,請(qǐng)加入群符號(hào)執(zhí)行  339834199

軟件試用申請(qǐng)官網(wǎng):www.threadingtest.com

 

當(dāng)前題目:Android單元測(cè)試,使用ThreadingTest進(jìn)行全新體驗(yàn)
網(wǎng)頁(yè)路徑:http://www.rwnh.cn/article32/psgssc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站靜態(tài)網(wǎng)站、Google、網(wǎng)站制作、云服務(wù)器、網(wǎng)站策劃

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名
灵寿县| 平凉市| 炎陵县| 色达县| 茂名市| 榆社县| 信宜市| 盐池县| 子洲县| 会昌县| 昭觉县| 铜陵市| 肇庆市| 奉节县| 高邑县| 弥勒县| 陇南市| 绍兴市| 灵宝市| 利辛县| 神木县| 荔波县| 汝阳县| 阳新县| 灌南县| 冀州市| 赤城县| 封开县| 临夏市| 宽城| 华安县| 古丈县| 嘉定区| 蛟河市| 新闻| 钟山县| 城步| 琼结县| 武定县| 巫山县| 杂多县|