OSS Allure Reportを導入し作成したレポートをブラウザで表示してみる

多言語テスト レポート ツールである Allure Report をインストールし使ってみる。

# 導入先環境
- CentOS Stream 9

# 導入パッケージ
- allure_2.24.1-1.noarch.rpm

結果的に導入したパッケージ
- sdkman
- java-17-openjdk
- zip
- unzip
- gradle 8.4

# Allureパッケージのインストール
```bash
$ sudo rpm -ivh allure_2.24.1-1.noarch.rpm 
エラー: 依存性の欠如:
	java8-runtime | java8-runtime-headless | openjdk8-jre-headless | openjdk-8-jre | openjdk-8-jdk | oracle-java8-installer | oracle-java8-installer は allure-0:2.24.1-1.noarch に必要とされています
```

下記サイトの「Install via the system package manager (for Linux)」には、特に前提条件の記載が見当たらなかったが、一番下の「Install from an archive (for any system)」には、「Make sure Java version 8 or above installed, and its directory is specified in the JAVA_HOME environment variable.」と記載がある所から、java8以上のインストールが必要そう。

https://allurereport.org/docs/gettingstarted-installation/

```bash
$ sudo yum install -y java-17-openjdk
$ java --version
openjdk 17.0.6 2023-01-17 LTS
OpenJDK Runtime Environment (Red_Hat-17.0.6.0.10-3.el9) (build 17.0.6+10-LTS)
OpenJDK 64-Bit Server VM (Red_Hat-17.0.6.0.10-3.el9) (build 17.0.6+10-LTS, mixed mode, sharing)
$ sudo rpm -ivh --nodeps allure_2.24.1-1.noarch.rpm 
Verifying...                          ################################# [100%]
準備しています...              ################################# [100%]
更新中 / インストール中...
   1:allure-0:2.24.1-1                警告: user runner does not exist - using root
警告: user runner does not exist - using root
〜省略〜
警告: user runner does not exist - using root
```
# プロセス起動用ユーザを作成しallure serveで起動
- --portでポート指定しない場合、起動する毎にランダムでポート番号が変わるため、5050を指定して起動。
```bash
$ sudo groupadd allure
$ sudo useradd -g allure allure

# allure を 5050/tcpで起動するので許可ポート設定
$ sudo firewall-cmd --permanent --add-port=5050/tcp
success
$ sudo firewall-cmd --reload
success

$ su - allure
$ export PATH=$PATH:/usr/share/allure/bin
$ allure serve --port 5050
Generating report to temp directory...
allure-results does not exist
Report successfully generated to /tmp/7342712678912309724/allure-report
Starting web server...
2023-11-05 00:24:24.364:INFO::main: Logging initialized @1368ms to org.eclipse.jetty.util.log.StdErrLog
Can not open browser because this capability is not supported on your platform. You can use the link below to open the report manually.
Server started at <http://192.168.11.46:5050/>. Press <Ctrl+C> to exit
```

# ブラウザからアクセス

![スクリーンショット 2023-11-05 0.31.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50452/95712c55-d824-b5c0-bd64-e7d5e1ee0cec.png)

# Allure Report　に取り込むレポートの作成
- JUnit5を用いたテストコードの実行結果をレポートとして作成する。
- 作成に必要な環境は、gradleにて行う。
```bash
$ curl -s "https://get.sdkman.io" | bash
〜省略〜
Looking for a previous installation of SDKMAN...
Looking for unzip...
Not found.
======================================================================================================
 Please install unzip on your system using your favourite package manager.

 Restart after installing unzip.
======================================================================================================

'exit 1': command failed with exit code 1.


# unzipパッケージが必要とのことで、rインストール
$ sudo yum install -y unzip
$ curl -s "https://get.sdkman.io" | bash
〜省略〜
Looking for a previous installation of SDKMAN...
Looking for unzip...
Looking for zip...
Not found.
======================================================================================================
 Please install zip on your system using your favourite package manager.

 Restart after installing zip.
======================================================================================================

'exit 1': command failed with exit code 1.


# zipパッケージも必要なようだ
$ sudo yum install -y zip
$ curl -s "https://get.sdkman.io" | bash
〜省略〜
Please open a new terminal, or run the following in the existing one:

    source "/home/allure/.sdkman/bin/sdkman-init.sh"
〜省略〜
$ source .sdkman/bin/sdkman-init.sh 
$ sdk version

SDKMAN!
script: 5.18.2
native: 0.4.3
```
# Gradleのインストール
```bash
$ sdk install gradle 8.4
$ gradle -v
〜省略〜


------------------------------------------------------------
Gradle 8.4
------------------------------------------------------------

Build time:   2023-10-04 20:52:13 UTC
Revision:     e9251e572c9bd1d01e503a0dfdf43aedaeecdc3f

Kotlin:       1.9.10
Groovy:       3.0.17
Ant:          Apache Ant(TM) version 1.10.13 compiled on January 4 2023
JVM:          17.0.6 (Red Hat, Inc. 17.0.6+10-LTS)
OS:           Linux 5.14.0-319.el9.x86_64 amd64
```

# Gradle定義とテストコード作成
```groovy
$ vi build.gradle
plugins {
  id 'java'
  id "io.qameta.allure" version "2.11.2"
}

repositories {
  mavenCentral()
}

dependencies {
  testImplementation 'org.junit.jupiter:junit-jupiter:5.9.1'
}

test {
  useJUnitPlatform()
}
```
```java
$ mkdir -p src/test/java/hello
$ vi ssrc/test/java/hello/HelloTest.java
package hello;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;

public class HelloTest {
  @Test
  public void assertTest() {
    assertEquals(1, 1);
  }
}
```
# Allure Report作成
```bash
$ gradle test
$ find build/allure-results/
build/allure-results/
build/allure-results/executor.json
build/allure-results/ace794a7-88b1-4a76-ba0c-a336bc593964-result.json
build/allure-results/e5fac948-38dd-4612-ba72-eafc4f93a219-container.json
build/allure-results/3fe5695c-fa84-4b22-a23c-1208e18e249b-container.json
```
# Allure Reportの生成
```bash
$ allure generate build/allure-results -o /tmp/7342712678912309724/allure-report --clean
Report successfully generated to /tmp/7342712678912309724/allure-report
```
# Allure Reportの再表示
gradleで実行したテストコードのメソッド名が表示された。

![スクリーンショット 2023-11-05 1.47.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50452/c2848414-faf0-9ee4-02de-ec1b1ee1371f.png)