2016-06-18 11 views
0

Ich habe eine Klasse, die wie folgt aussieht:Junit mit Ameise

---imports--- 

class ErroringClass { 

/* methods*/ 
main{} 

} 

aktualisieren

public class TestErroringClass { 

static ArrayList<Integer> arrayTestTimes; 
static ErroringClass main = new ErroringClass(); 

@Test 
public test{} 

. 
. 
. 
} 

Testfall: initializationError nahm 0,002 sec hat einen Fehler verursacht Die Klasse ErrorTestClass nicht öffentlich ist. java.lang.Exception: Die Klasse ErrorTestClass ist nicht öffentlich. bei java.lang.reflect.Constructor.newInstance (Constructor.java:423)

Testfall: initializationError nahm 0 sec ein ERROR Test-Klasse verursacht java.lang.Exception genau einen öffentlichen Konstruktor haben sollte: Testklasse genau einen öffentlichen Konstruktor sollte bei java.lang.reflect.Constructor.newInstance (Constructor.java:423)

<!-- Testsuite --> 
<target name="test" depends="compile" > 
    <junit fork="yes" 
      description="Unit Tests" 
      showoutput="true" 
      printsummary="true" 
      outputtoformatters="true" filtertrace="on"> 
     <classpath> 
      <path refid="classpath.test"/> 
      <pathelement location="${main.build.dir}"/> 
      <pathelement location="${test.build.dir}"/> 
     </classpath> 

     <test name="ErrorTestClass" outfile="./output" > 
      <!-- <formatter type="brief" usefile="true" /> --> 
      <formatter type="plain" usefile="true" /> 
     </test> 
    </junit> 
</target> 

Der Versuch, meinen Test von Ameise und nicht bekommen sie laufen alle meine Dateien, um zu sehen, die in eine Datei, um die Quelle gemäß den Designregeln zugänglich zu halten. Was vermisse ich?

Aktualisiert

Testsuite: ErrorTestClass 
Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.104 sec 
------------- Standard Output --------------- 
[] 
------------- ---------------- --------------- 
Testcase: Test1 took 0.001 sec 
Testcase: Test2 took 0 sec 
Testcase: Test3 took 0 sec 
Testcase: Test4 took 0 sec 
Testcase: Test5 took 0 sec 
Testcase: stringTestNull took 0.001 sec 
Testcase: stringTestTrue took 0 sec 
Testcase: assertNullTest took 0 sec 

Antwort

1

Es weil ErrorTestClass hat Paketebene Zugriff (Standard Sichtbarkeitsmodifizierer). Ändern Sie es in public class ErrorTestClass.

+0

Ich habe den Test ausgeführt, aber sie laufen nicht wirklich. Die Zeiten sind zu kurz. Der Code wurde mit den verschiedenen kompilierten Klassen aktualisiert, nachdem sie beide veröffentlicht wurden. –

+0

Sind Sie sicher? Haben Sie etwas Einfaches versucht, zum Beispiel einige 'System.out.println'-Anweisungen in die Tests einzutragen? Die Tatsache, dass es eine Exception ausgelöst hat, und jetzt hast du das korrigiert, indem du es öffentlich gemacht hast und die Exception verschwunden ist, legt mir nahe, dass es die Tests ausführt. Vielleicht könnten Sie 'fail()' aus den Tests aufrufen und sie erneut ausführen? –

+0

Der System.out.print ist nicht möglich, Junit-Task zum Zurückgeben von Informationen zu verwenden. –