2017-05-17 18 views
0

別のコンピュータでビルドされた古いプロジェクトをダウンロードしました。私はJava環境を現在の環境にインストールしています。私も、junitをダウンロードして動作させました。以前に動作していたbuild.rbとrun_test.rbファイルを使用してテストを実行すると、コード全体を否定する多くのエラーが発生します。ここに例がありますjunit - テストが実行されず、多くのエラーが発生する

$ ruby build.rb 
shop_basket\Cashdesk.java:4: error: class CashDesk is public, should be 
declared in a file named CashDesk.java 
public class CashDesk{ 
^
1 error 
shop_basketSpec\CashdeskTest.java:5: error: class CashDeskTest is public, 
should be declared in a file named CashDeskTest.java 
public class CashDeskTest{ 
^
shop_basketSpec\BasketTest.java:2: error: package org.junit does not exist 
import org.junit.*; 
^ 
shop_basketSpec\BasketTest.java:3: error: package org.junit does not exist 
import static org.junit.Assert.*; 
       ^
shop_basketSpec\CashdeskTest.java:2: error: package org.junit does not exist 
import org.junit.*; 
^ 
shop_basketSpec\CashdeskTest.java:3: error: package org.junit does not exist 
import static org.junit.Assert.*; 
       ^
shop_basketSpec\CashdeskTest.java:7: error: cannot find symbol 
CashDesk cashdesk; 
^ 
symbol: class CashDesk 
location: class CashDeskTest 
shop_basketSpec\CustomerTest.java:2: error: package org.junit does not exist 
import org.junit.*; 
^ 
shop_basketSpec\CustomerTest.java:3: error: package org.junit does not 
exist 
import static org.junit.Assert.*; ^
shop_basketSpec\ProductTest.java:2: error: package org.junit does not exist 
import org.junit.*; 
^

などです。コード構造全体に関わるように、このようなエラーがさらに発生します。私は理由を知りません。 すべてのCLASSPATHなどがWindows OSに設定されているようです。私のコーディングでは動かすことができないので、全体が刺激的です。ヘルプ

のおかげでここに私の設定CLASSPATHは、最初の場合 CLASSPATH image

私のRubyファイルの内容

run_tests.rb

require 'find' 

def find_valid_files 
    files = [] 
    Find.find('bin') do |path| 
    files << path if path.include?(".class") && path.include?("Test") 
end 
return files 
end 

def run_tests(files) 
    for file in files 
    fileName = File.basename(file, ".*") 
    puts "Running #{fileName}" 

    system("java org.junit.runner.JUnitCore #{fileName}") 
end 
end 

valid_files = find_valid_files() 

Dir.chdir "bin" 

run_tests(valid_files) 

build.rb

require 'fileutils' 

def filter_directories 

    excluded_directories = ["bin"] 

    all_files = Dir.glob('*') 

return all_files.select do |file| 
    next if excluded_directories.include?(file) 
    File.directory?(file) 
end 
end 

def create_bin 
    FileUtils.rm_rf('bin') 
    FileUtils.mkdir_p('bin') 
end 

def run_tests directories 
    for directory in directories 
    puts "building #{directory}" 
    system("javac -d bin #{directory}/*.java") 
    end 
end 

create_bin() 

valid_directories = filter_directories() 

run_tests(valid_directories) 
+0

たぶん、あなたは、以前のWindows上に構築され、現在のファイル名は大文字と小文字が区別されます(と一致する必要がありますLinuxの、にファイルをコピーするJUnitのライブラリを含める必要があります意味error: package org.junit does not existクラス名)。また、JUnit jarはクラスパスに含まれていないようです。 –

+0

しかし、それはクラスパスにあるようです。プロンプトでset CLASSPATHコマンドを入力すると、junit.jarファイルに至るパス全体が取得されます。私はファイルを実行するためにbashを使用します...おそらくそれは問題です – bwielk

+0

@MickMnemonic - Windowsではファイル名の大文字と小文字は区別されませんが、Javaではまだどのプラットフォームに関係なくクラス名とファイル名が正確に一致する必要があります。 –

答えて

0

ですCashDeskとCasに関する2つのエラーhDeskTest - あなたのファイル名は小文字の 'd'(Cashdesk.javaとCashdeskTest.java)です。ファイル名の大文字と小文字は、コードで宣言されている実際のクラス名と一致する必要があります。それを修正してください。

その後もJUnitエラーが表示される場合は、クラスパスにJUnit JARがあることを確認してください。

+0

私は既にそれを以前にやっているし、まだ動作していない。コマンドプロンプトでset CLASSPATHと入力すると、junit.jarファイルのパス全体が表示されます – bwielk

+0

このコードをどのようにコンパイルしようとしていますか? IDEまたはコマンドライン経由ですか?コンパイル時にクラスパスを明示的に指定すると(コマンドラインで-cp引数を指定すると)何が起きるかを調べようとします。 –

+0

ruby​​とjavaに設定されているbashを使ってコンパイルしています。 – bwielk

0

エラーCashdesk.java:4: error: class CashDesk is public, should be declared in a file named CashDesk.javaは、.javaファイル名とそれに含まれるパブリッククラスの間の不一致によって発生します。このexapleクラスでは、CashDeskはCashdesk.javaというファイルに保存されています。

エラーの第二の束は、あなたのプロジェクトのクラスパス

+0

「私のプロジェクトのクラスパス」はどういう意味ですか? :)私のクラスパスは、それがjunit.jarに設定されていると言っています – bwielk

+0

私はあなたのプログラムのCPを意味します。 junitが見つかりませんでしたエラーが発生した場合 - これは、このライブラリがクラスパスに見つかりません。あなたの内容を投稿するのが賢明かもしれません* .rbファイル –

+0

私はちょうど私のセットのCLASSPATH – bwielk

関連する問題