算法第0x00天 - windows+junit

213 阅读1分钟

算法第0x00天 - windows+junit

  • 今天这篇主要是准备环境,不涉及题目。
  • 只用IDE, linux, mac osx 的亲,请绕过。
  • 对于 old school 编辑器偏好的,请继续看。

安装配置 java

下载 openjdk 8 zip 包 openjdk-8u42-b03-windows-i586-14_jul_2022.zip 解压放进 C:\dev\

配置 jdk

md %USERPROFILE%\src\alg2022\bin\
pushd %USERPROFILE%\src\alg2022\bin\
notepad javaenv.bat

javaenv.bat 内容如下

pushd C:\dev\java-se-8u42-ri
set JAVA_HOME=%CD%
set JAVA_TOOL_OPTIONS=-Duser.language=en -Dfile.encoding=UTF-8
set PATH=%JAVA_HOME%\bin;%PATH%
md %USERPROFILE%\src\alg2022\bin\
pushd %USERPROFILE%\src\alg2022\bin\
notepad alg2022.bat

alg2022.bat 内容如下

%comspec% /k %USERPROFILE%\src\alg2022\bin\javaenv.bat

配置 junit

md %USERPROFILE%\src\alg2022\libs
explorer %USERPROFILE%\src\alg2022\libs

下载 junit jar 包 junit-4.3.1.jar 解压放进 %USERPROFILE%\src\alg2022\libs

生成 javacc.bat

md %USERPROFILE%\src\alg2022\bin\
pushd %USERPROFILE%\src\alg2022\bin\
set PATH=%CD%;%PATH%
notepad javacc.bat

javacc.bat 内容如下

set name=%~n1
set cpoption=-cp .;..\libs\junit-4.3.1.jar;%CLASSPATH%
javac %cpoption% %name%.java

生成 javarun.bat

md %USERPROFILE%\src\alg2022\bin\
pushd %USERPROFILE%\src\alg2022\bin\
set PATH=%CD%;%PATH%
notepad javarun.bat

javarun.bat 内容如下

set name=%~n1
set cpoption=-cp .;..\libs\junit-4.3.1.jar;%CLASSPATH%
java %cpoption% %name%

生成 Solution 类文件

md %USERPROFILE%\src\alg2022\solution0x01\
pushd %USERPROFILE%\src\alg2022\solution0x01\
notepad Solution.java
class Solution {
    public int[] twoSum(int[] nums, int target) {

    }
}
javacc.bat Solution.java

生成 Test Case 文件

md %USERPROFILE%\src\alg2022\solution0x01\
pushd %USERPROFILE%\src\alg2022\solution0x01\
notepad SolutionTest.java
import static org.junit.Assert.*;
import org.junit.Test;

public class SolutionTest{
    @Test
    public void test_pass(){
        int expect=1;
        int actual=1;
        assertEquals(expect,actual);
    }
    @Test
    public void test_failed(){
        int expect=0;
        int actual=1;
        assertEquals(expect,actual);
    }
}
javacc.bat SolutionTest.java

生成 Test Runner 文件

md %USERPROFILE%\src\alg2022\solution0x01\
pushd %USERPROFILE%\src\alg2022\solution0x01\
notepad SolutionRunner.java
import org.junit.runner.JUnitCore;
import org.junit.runner.Result;        
import org.junit.runner.notification.Failure;

public class SolutionRunner {
    public static void main(String[] args) {
        Result result = JUnitCore.runClasses(SolutionTest.class);

        for (Failure failure : result.getFailures()) {                            
            System.out.println(failure.toString());                    
        }        
        System.out.println("Result=="+result.wasSuccessful());
    }
}
javacc.bat SolutionRunner.java
javarun.bat SolutionRunner.java
Picked up JAVA_TOOL_OPTIONS: -Duser.language=en -Dfile.encoding=UTF-8
test_failed(SolutionTest): expected:<0> but was:<1>
Result==false

参考