久草视频污在线观看|亚洲熟女丝袜AV|中国三级在线免费|在线免费牛牛AV|日韩无码青青草原|国产V日产∨综合V精品视频|98超碰资源人人|久久久久久久探花蜜蜜蜜|久久小视频免费在|亚洲日韩欧美国产网站

JUnit

#軟件應用# 0 0
JUnit是用于編寫和運行Java程序單元測試的開源框架,由Kent Beck和Erich Gamma建立它提供了一組注解和斷言方法,以及用于執(zhí)行測試的測試運行器。其現(xiàn)逐漸成為源于Kent Beck的sUnit的xUnit家族中最為成功的一個,被廣泛應用在Java開發(fā)領域中,成為標準的單元測試框架之一。
  • 外文名稱: JUnit
  • 創(chuàng)始人: Kent Beck,Erich Gamma
詳細介紹 PROFILE +

基本介紹

JUnit是一個Java語言的單元測試框架。它由Kent Beck和Erich Gamma建立,逐漸成為源于Kent Beck的sUnit的xUnit家族中最為成功的一個。JUnit有它自己的JUnit擴展生態(tài)圈。多數(shù)Java的開發(fā)環(huán)境都已經(jīng)集成了JUnit作為單元測試的工具。

JUnit是由Erich Gamma和Kent Beck編寫的一個回歸測試框架(regression testing framework)。Junit測試是程序員測試,即所謂白盒測試,因為程序員知道被測試的軟件如何(How)完成功能和完成什么樣(What)的功能。Junit是一套框架,繼承TestCase類,就可以用Junit進行自動測試了。

安裝

安裝很簡單,先到以下地址下載一個最新的zip包:

下載完以后解壓到你喜歡的目錄下,假設是JUNIT_HOME,然后將JUNIT_HOME下的junit.jar包加到你的系統(tǒng)的CLASSPATH環(huán)境變量中,對于IDE環(huán)境,對于需要用到的junit的項目增加到lib中,其設置不同的IDE有不同的設置,這里不多講。

測試

最簡單的范例如下:

1、創(chuàng)建一個TestCase的子類

package junitfaq;

import java.util.*;

import junit.framework.*;

public class SimpleTest extends TestCase {

public SimpleTest(String name) {

super(name);

}

2、寫一個測試方法斷言期望的結(jié)果

public void testEmptyCollection(){

Collection collection = new ArrayList();

assertTrue(collection.isEmpty());

}

注意:JUnit推薦的做法是以test作為待測試的方法的開頭,這樣這些方法可以被自動找到并被測試。

3、寫一個suite()方法,它會使用反射動態(tài)的創(chuàng)建一個包含所有的testXxxx方法的測試套件

public static Test suite() {

return new TestSuite(SimpleTest.class);

}

4、寫一個main()方法以文本運行器的方式方便的運行測試

public static void main(String args[]) {

junit.textui.TestRunner.run(suite());

}

}

5、運行測試

以文本方式運行:

java junitfaq.SimpleTest

通過的測試結(jié)果是:

.

Time: 0

OK (1 tests)

Time上的小點表示測試個數(shù),如果測試通過則顯示OK。否則在小點的后邊標上Fail,表示該測試失敗。

每次的測試結(jié)果都應該是OK的,這樣才能說明測試是成功的,如果不成功就要馬上根據(jù)提示信息進行修正了。

如果JUnit報告了測試沒有成功,它會區(qū)分失敗(failures)和錯誤(errors)。失敗是你的代碼中的assert方法失敗引起的;而錯誤則是代碼異常引起的,例如ArrayIndexOutOfBoundsException。

以圖形方式運行:

java junit.swingui.TestRunner junitfaq.SimpleTest

通過的測試結(jié)果在圖形界面的綠色條部分。

以上是最簡單的測試樣例,在實際的測試中我們測試某個類的功能是常常需要執(zhí)行一些共同的操作,完成以后需要銷毀所占用的資源(例如網(wǎng)絡連接、數(shù)據(jù)庫連接,關閉打開的文件等),TestCase類給我們提供了setUp方法和tearDown方法,setUp方法的內(nèi)容在測試你編寫的TestCase子類的每個testXxxx方法之前都會運行,而tearDown方法的內(nèi)容在每個testXxxx方法結(jié)束以后都會執(zhí)行。這個既共享了初始化代碼,又消除了各個測試代碼之間可能產(chǎn)生的相互影響。

實踐

不要認為壓力大,就不寫測試代碼。相反編寫測試代碼會使你的壓力逐漸減輕,因為通過編寫測試代碼,你對類的行為有了確切的認識。你會更快地編寫出有效率地工作代碼。

下面是一些具體的編寫測試代碼的技巧或較好的實踐方法:

1.不要用TestCase的構(gòu)造函數(shù)初始化Fixture,而要用setUp()和tearDown()方法。

2.不要依賴或假定測試運行的順序,因為JUnit利用Vector保存測試方法。所以不同的平臺會按不同的順序從Vector中取出測試方法。

3.避免編寫有副作用的TestCase。例如:如果隨后的測試依賴于某些特定的交易數(shù)據(jù),就不要提交交易數(shù)據(jù)。簡單的回滾就可以了。

4.當繼承一個測試類時,記得調(diào)用父類的setUp()和tearDown()方法。

5.將測試代碼和工作代碼放在一起,一邊同步編譯和更新。(使用Ant中有支持junit的task.)

6.測試類和測試方法應該有一致的命名方案。如在工作類名前加上test從而形成測試類名。

7.確保測試與時間無關,不要依賴使用過期的數(shù)據(jù)進行測試。導致在隨后的維護過程中很難重現(xiàn)測試。

8.如果你編寫的軟件面向國際市場,編寫測試時要考慮國際化的因素。不要僅用母語的Locale進行測試。

9.盡可能地利用JUnit提供地assert/fail方法以及異常處理的方法,可以使代碼更為簡潔。

10.測試要盡可能地小,執(zhí)行速度快。

11.不要硬性規(guī)定數(shù)據(jù)文件的路徑。

12.利用Junit的自動異常處理書寫簡潔的測試代碼

事實上在Junit中使用try-catch來捕獲異常是沒有必要的,Junit會自動捕獲異常。那些沒有被捕獲的異常就被當成錯誤處理。

13.充分利用Junit 的assert/fail方法

assertSame()用來測試兩個引用是否指向同一個對象

assertEquals()用來測試兩個對象是否相等

14.確保測試代碼與時間無關

15.使用文檔生成器做測試文檔。

JUnit和ant結(jié)合

ant提供了兩個target:junit和junitreport運行所有測試用例,并生成html格式的報表

具體操作如下:

1.將 junit.jar 放在 ANT_HOMElib 目錄下

2.修改 build.xml,加入如下 內(nèi)容:

-------------- One or more tests failed, check the report for detail... -----------------------------

運行這個target,ant會運行每個TestCase,在report目錄下就有了很多TEST*.xml和一些網(wǎng)頁打開report目錄下的 index.html就可以看到很直觀的測試運行報告,一目了然。

在Eclipse中開發(fā)、運行JUnit測試相當簡單。因為Eclipse本身集成了JUnit相關組件,并對JUnit的運行提供了無縫的支持。

使用幫助

junit3.x

我們通常使用junit 3.8

(1)、使用junit3.x版本進行單元測試時,測試類必須要繼承于TestCase父類;

(2)、測試方法需要遵循的原則:

A、public的

B、void的

C、無方法參數(shù)

D、方法名稱必須以test開頭

(3)、不同的Test Case之間一定要保持完全的獨立性,不能有任何的關聯(lián)。

(4)、我們要掌握好測試方法的順序,不能依賴于測試方法自己的執(zhí)行順序。

demo:

public class TestMyNumber extends TestCase {

private MyNumber myNumber;

public TestMyNumber(String name) {

super(name);

}

// 在每個測試方法執(zhí)行 [之前] 都會被調(diào)用

@Override

public void setUp() throws Exception {

// System.out.println("歡迎使用Junit進行單元測試…");

myNumber = new MyNumber();

}

// 在每個測試方法執(zhí)行 [之后] 都會被調(diào)用

@Override

public void tearDown() throws Exception {

// System.out.println("Junit單元測試結(jié)束…");

}

public void testDivideByZero() {

Throwable te = null;

try {

myNumber.divide(6, 0);

Assert.fail("測試失敗");

} catch (Exception e) {

e.printStackTrace();

te = e;

}

Assert.assertEquals(Exception.class, te.getClass());

Assert.assertEquals("除數(shù)不能為 0 ", te.getMessage());

}

}

junit4.x

(1)、使用junit4.x版本進行單元測試時,不用測試類繼承TestCase父類,因為,junit4.x全面引入了Annotation來執(zhí)行我們編寫的測試。

(2)、junit4.x版本,引用了注解的方式,進行單元測試;

(3)、junit4.x版本我們常用的注解:

A、@Before 注解:與junit3.x中的setUp()方法功能一樣,在每個測試方法之前執(zhí)行;

B、@After 注解:與junit3.x中的tearDown()方法功能一樣,在每個測試方法之后執(zhí)行;

C、@BeforeClass 注解:在所有方法執(zhí)行之前執(zhí)行;

D、@AfterClass 注解:在所有方法執(zhí)行之后執(zhí)行;

E、@Test(timeout=xxx)注解:設置當前測試方法在一定時間內(nèi)運行完,否則返回錯誤;

F、@Test(expected=Exception.class)注解:設置被測試的方法是否有異常拋出。拋出異常類型為:Exception.class;

G、@Ignore注解:注釋掉一個測試方法或一個類,被注釋的方法或類,不會被執(zhí)行。

demo:

package com.an.junit;

import static org.junit.Assert.*;

import org.junit.After;

import org.junit.AfterClass;

import org.junit.Before;

import org.junit.BeforeClass;

import org.junit.Test;

public class TestMyNumber {

private MyNumber myNumber;

@BeforeClass

// 在所有方法執(zhí)行之前執(zhí)行

public static void globalInit() {

System.out.println("init all method...");

}

@AfterClass

// 在所有方法執(zhí)行之后執(zhí)行

public static void globalDestory() {

System.out.println("destory all method...");

}

@Before

// 在每個測試方法之前執(zhí)行

public void setUp() {

System.out.println("start setUp method");

myNumber = new MyNumber();

}

@After

// 在每個測試方法之后執(zhí)行

public void tearDown() {

System.out.println("end tearDown method");

}

@Test(timeout=600)// 設置限定測試方法的運行時間 如果超出則返回錯誤

public void testAdd() {

System.out.println("testAdd method");

int result = myNumber.add(2, 3);

assertEquals(5, result);

}

@Test

public void testSubtract() {

System.out.println("testSubtract method");

int result = myNumber.subtract(1, 2);

assertEquals(-1, result);

}

@Test

public void testMultiply() {

System.out.println("testMultiply method");

int result = myNumber.multiply(2, 3);

assertEquals(6, result);

}

@Test

public void testDivide() {

System.out.println("testDivide method");

int result = 0;

try {

result = myNumber.divide(6, 2);

} catch (Exception e) {

fail();

}

assertEquals(3, result);

}

@Test(expected = Exception.class)

public void testDivide2() throws Exception {

System.out.println("testDivide2 method");

myNumber.divide(6, 0);

fail("test Error");

}

public static void main(String[] args) {

}

}

特色功能

優(yōu)點

另外junit是在極限編程和重構(gòu)(refactor)中被極力推薦使用的工具,因為在實現(xiàn)自動單元測試的情況下可以大大的提高開發(fā)的效率,但是實際上編寫測試代碼也是需要耗費很多的時間和精力的,那么使用這個東西好處到底在哪里呢?筆者認為是這樣的:

極限編程

要求在編寫代碼之前先寫測試,這樣可以強制你在寫代碼之前好好的思考代碼(方法)的功能和邏輯,否則編寫的代碼很不穩(wěn)定,那么你需要同時維護測試代碼和實際代碼,這個工作量就會大大增加。因此在極限編程中,基本過程是這樣的:構(gòu)思-> 編寫測試代碼-> 編寫代碼-> 測試,而且編寫測試和編寫代碼都是增量式的,寫一點測一點,在編寫以后的代碼中如果發(fā)現(xiàn)問題可以較快的追蹤到問題的原因,減小回歸錯誤的糾錯難度。

重構(gòu)

其好處和極限編程中是類似的,因為重構(gòu)也是要求改一點測一點,減少回歸錯誤造成的時間消耗。

其他情況

我們在開發(fā)的時候使用junit寫一些適當?shù)臏y試也是有必要的,因為一般我們也是需要編寫測試的代碼的,可能原來不是使用的junit,如果使用junit,而且針對接口(方法)編寫測試代碼會減少以后的維護工作,例如以后對方法內(nèi)部的修改(這個就是相當于重構(gòu)的工作了)。另外就是因為junit有斷言功能,如果測試結(jié)果不通過會告訴我們哪個測試不通過,為什么,而如果是像以前的一般做法是寫一些測試代碼看其輸出結(jié)果,然后再由自己來判斷結(jié)果是否正確,使用junit的好處就是這個結(jié)果是否正確的判斷是它來完成的,我們只需要看看它告訴我們結(jié)果是否正確就可以了,在一般情況下會大大提高效率。

特性

JUnit是一個開放源代碼的Java測試框架,用于編寫和運行可重復的測試。他是用于單元測試框架體系xUnit的一個實例(用于java語言)。它包括以下特性:

1、用于測試期望結(jié)果的斷言(Assertion)

2、用于共享共同測試數(shù)據(jù)的測試工具

3、用于方便的組織和運行測試的測試套件

4、圖形和文本的測試運行器

本百科詞條由網(wǎng)站注冊用戶【 CN109625 】編輯上傳提供,當前頁面所展示的詞條介紹涉及宣傳內(nèi)容屬于注冊用戶個人編輯行為,網(wǎng)站不完全保證內(nèi)容信息的準確性、真實性,也不代表本站立場。 版權(quán)聲明 反饋 我要認領
最新評論
相關知識文章
十大編程軟件排行榜 編程開發(fā)工具大全 c語言編程軟件有哪些
世界上主流的編程語言有C、Java、Python、C++、C#、Visual Basic、PHP等,針對這些編程語言,又有相對應的編程開發(fā)工具被廣泛運用。那么你知道主流的編程軟件有哪些嗎?下面maigoo網(wǎng)編輯為大家盤點常見的十大編程工具,包括Visual Studio、IntelliJ IDEA、PyCharm、WebStorm、Android Studio、Xcode等,一起來了解下吧。
十大AI換臉軟件排行 視頻換臉軟件哪個好 ai換臉工具推薦
在人工智能的大潮下,許多ai換臉軟件紛紛進入市場,雖然存在隱私問題,但憑借獨特的娛樂性,依舊掀起了一股換臉熱潮,那么AI換臉軟件有哪些?ai換臉工具哪個好?下面,maigoo編輯為大家分享十大AI換臉軟件排行榜,包括DeepFaceLab、Faceswap、Openfaceswap、FakeAPP、Swapface、Remaker、Reface等熱門換臉p圖軟件,一起來了解下吧。
七大去馬賽克軟件排行 視頻去馬賽克軟件哪個好用 馬賽克去除工具推薦
馬賽克是使用頻率最高、使用范圍最廣的一種圖片/視頻處理手段,涉及新聞、動漫、電影、連續(xù)劇、寫真等方面。作為一種具備了數(shù)十年歷史的處理技術,馬賽克沿用到今天有什么破解方法呢?Maigoo小編為此盤點了一批去除馬賽克的軟件,其中有JavPlayer、Video Enhancer、DeepCreamPy、TecoGAN、Face Depixelizer、EnhanceNet等視頻馬賽克去除工具,一起看看!
十大裝修軟件推薦 裝修設計軟件排名 裝修軟件app哪個好
近些年,各大小家裝公司逐漸向數(shù)字化轉(zhuǎn)型。隨著行業(yè)內(nèi)一線品牌齊家網(wǎng)在香港的上市,標志著互聯(lián)網(wǎng)家裝模式的成熟。如今線上家裝領域中,土巴兔裝修、酷家樂設計師、齊家、愛空間裝修、好好住、住小幫、知戶型等裝修軟件,已成為越來越多業(yè)主的選擇,這些家裝設計軟件帶來的一站式服務,讓裝修變得更省心。下面和maigoo編輯一起看看!
國內(nèi)十大聊天工具 國內(nèi)聊天軟件排行 聊天交友軟件推薦
近五年來,我國移動社交用戶規(guī)模持續(xù)增長,到2019年已有7.77億人左右,同時,各類社交產(chǎn)品層出不窮,企圖從中分一杯羹;那么時至今日,用戶活躍度最高的聊天軟件有哪些呢?微信、QQ、陌陌、釘釘、探探、Soul、積目、米聊等聊天工具市場占有率如何?下面跟隨maigoo小編看看這些聊天交友軟件!
十大國外社交軟件app 國外聊天軟件哪個最火 外國常用聊天app盤點
不同國家都有自己流行的社交軟件,有的軟件用戶基數(shù)龐大,有的安全私密性更高,有的雖小眾但使用體驗好。那么,你知道國外用什么聊天軟件嗎?下面,maigoo小編就為大家盤點國外最火的十大聊天軟件,包括WhatsApp、Facebook Messenger、Instagram Direct、iMessage、Skype、Telegram等,一起來了解下這些國外社交軟件app吧。
十大ai聊天自動軟件 ai聊天APP哪個好 AI對話聊天軟件推薦
隨著AI的盛行,和AI聊天已經(jīng)成為許多年輕人的發(fā)泄出口,AI能做到24小時的情感陪伴,情緒價值拉滿,那ai聊天APP哪個好呢?Maigoo小編為大家?guī)砹耸骯i聊天自動軟件,如:ChatGPT、Talkie、Character.Ai、Replika、豆包、Claude、AlienChat等,一起來看看吧。
國外十大最火的短視頻app推薦 外國人常用的短視頻軟件有哪些
在這個視頻當?shù)赖臅r代,每個人的生活與各種短視頻app緊密相連。本文中,買購網(wǎng)編輯就帶大家看看國外短視頻軟件有哪些、國外短視頻app哪個最火,例如TikTok、Likee、Instagram,以及Kwai、YouTube、Snapchat、Triller、Vmate、Mico等,都較具代表性。下面一起了解下這些國外短視頻平臺。
十大解壓軟件 解壓縮軟件哪個好用 文件壓縮軟件哪個好
在這個信息碎片化的時代,電腦上各種類型的文件數(shù)不勝數(shù),一款好用的壓縮軟件,既能以較高質(zhì)量集合保存?zhèn)€人信息,又能節(jié)省硬盤空間;縱觀全網(wǎng),備受推崇的解壓縮軟件有WinRAR、7-zip、2345好壓、360壓縮、Bandizip、快壓、WinZip、PeaZip等,下面跟隨MaiGoo網(wǎng)編輯了解下這些解壓軟件!
十大跑分軟件排行 電腦跑分軟件哪個好 靠譜的電腦檢測軟件推薦
電腦跑分,即是利用軟件對電腦硬件進行性能測試,分數(shù)越高,在一定程度上代表著性能越強。如今電腦配置各不相同,要想更準確的測試出性能如何,得先知道跑分軟件哪個好,接下來請跟隨maigoo小編一起看看3D Mark、魯大師、AIDA64、PCMark、FurMark、GPU-Z、CPU-Z、Fritz Chess Benchmark、GeekBench等電腦跑分軟件!
十大手游模擬器排行榜 最好用的手游模擬器 手機游戲模擬器推薦
模擬器在手游行業(yè)中的地位越來越重要,早在2020年,我國模擬器用戶數(shù)量就已突破1.3億。那么好用的手游模擬器有哪些呢?下面maigoo小編為大家分享十大手游模擬器排行榜,包括騰訊手游助手、雷電模擬器、夜神模擬器、MuMu模擬器、逍遙模擬器、藍疊模擬器等等等,都當下市場份額較高的手游模擬器,一起來了解下吧。
十大建模軟件排行榜 3d建模軟件有哪些 3d制圖軟件哪個好
3d建模軟件顛覆了傳統(tǒng)的2D模式,在游戲、影視、建筑/室內(nèi)設計、VR/AR、電商、工業(yè)設計、軍工設計等多個重要領域有著廣泛應用,并在一定程度上改變著行業(yè)的發(fā)展格局,那么在這種大環(huán)境下,相關從業(yè)者和愛好者有哪些3D制圖軟件可以使用?3DS MAX、Maya、Rhino、Blender、ZBrush、SketchUp等建模軟件效果如何?下面跟隨maigoo編輯來看看!
十大網(wǎng)上醫(yī)療咨詢平臺 線上問診app哪個好 醫(yī)生在線咨詢平臺
互聯(lián)網(wǎng)醫(yī)院近年規(guī)?;l(fā)展,不僅有巨頭企業(yè)入局,還有國家政策支持,那么優(yōu)質(zhì)的線上問診平臺有哪些?線上問診app哪個好?下面,CNPP小編為大家分享十大網(wǎng)上醫(yī)療咨詢平臺,包括好大夫在線、叮當快藥、快速問醫(yī)生、京東健康等線上醫(yī)生咨詢app,都較具代表性。各平臺運營情況請以官方實時調(diào)整為準。
十大多開分身app排行 分身軟件哪個好用 應用分身軟件推薦
應用分身軟件可以讓我們在手機上安裝兩個同樣的app,并且不受限制的使用,滿足我們的社交、工作和游戲需求。本文中Maigoo小編為大家整理了時下較熱門的十大多開分身app,分別是小X分身、雙開助手微分身版、悟空分身、分身大師、麻吉分身、無盡分身、微分身王、VMOS Pro等。這些多開軟件你都用過嗎,一起來了解下。
中國臺灣十大最常用的軟件 臺灣民眾常用app排行 臺灣最火的APP應用
相關統(tǒng)計數(shù)據(jù)顯示,臺灣同胞們最喜歡的應用是實時通訊類APP,其次是社群平臺類APP、地圖APP、娛樂類APP等。本文中,maigoo小編就帶大家看看臺灣常用的軟件有哪些,一起了解下臺灣app排名榜單,例如Line、Messenger、Instagram、TikTok、YouTube、Uber、?Foodpanda等,都是極具代表性的,在臺灣擁有廣泛的用戶基礎。
十大體育直播軟件 體育直播app哪個好 體育賽事直播app推薦
每年全球各大賽事不斷,目前體育直播觀看的軟件有騰訊體育、央視體育、咪咕視頻、愛奇藝體育、企鵝體育等(包括視頻直播和文字直播)。買購小編要提醒大家的是,這些體育直播平臺中,部分賽事直播是要收費,具體以官方實時調(diào)整為準,本榜單不具有唯一性。
十大好用的比價軟件 全網(wǎng)比價哪個app最好
如今購物平臺有很多,同一件商品在不同平臺的價格可能都不一樣。查價格什么軟件好用?全網(wǎng)比價平臺有哪些?下面maigoo小編就為大家盤點十大好用的比價軟件,包括慢慢買、什么值得買、一淘、識貨、粉象生活、喵喵折-好物清單、省錢快報等,都是現(xiàn)下比較流行的比價app。這些軟件的運營情況請以官方實時調(diào)整為準,本文僅供參考。
十大主流收音機軟件 手機廣播app哪個好 熱門收音機app推薦
收音機軟件是一種通過互聯(lián)網(wǎng)或移動網(wǎng)絡接收并播放廣播內(nèi)容的應用軟件。用戶可以通過收音機軟件隨時隨地收聽國內(nèi)外各類電臺,包括新聞、音樂、體育等多種類型。隨著移動設備和智能設備的普及,收音機軟件種類也越來越多,功能各異。那你知道手機廣播app哪個好?主流收音機軟件有哪些嗎?本期Maigoo網(wǎng)編就為大家盤點下十大主流收音機軟件,上榜的有喜馬拉雅FM、蜻蜓FM、云聽、TuneIn Radio、豆瓣FM、荔枝FM,一起來詳細了解下吧。
十大手機定位軟件 定位軟件哪個好 手機查位置軟件有哪些
手機定位功能多用于行車導航、手機定位追蹤,或服務類軟件,如美團、貓眼等;那么出于人身安全考慮,有哪些手機定位軟件適合家屬或朋友使用?能否通過手機號定位一個人的位置?下面跟隨maigoo小編來看看微關愛、時刻守護、米兔、怕怕、陽光守護、Lookus、Tracking定位、找?guī)褪謾C定位等熱門手機查位置軟件!
十大好用的AI視頻生成軟件推薦 ai一鍵生成視頻工具有哪些
在這個數(shù)字化時代,視頻內(nèi)容已成為吸引觀眾的最強大工具之一,隨著AI技術的發(fā)展,用AI生成視頻的工具越來越多,那ai一鍵生成視頻工具有哪些比較好呢?Maigoo小編為大家?guī)砹耸蠛糜玫腁I視頻生成軟件推薦,如:Runway、Pika、Sora、Genmo、Stable video diffusion、Dream Machine、Pixverse等,一起來看看吧。