Re: What version of JUnit, again?

Поиск
Список
Период
Сортировка
От David Ventimiglia
Тема Re: What version of JUnit, again?
Дата
Msg-id CALaE=t_50eCxcWvi4WA4VNCeTe54KjNAH4ckCG3iaigjHzmkfw@mail.gmail.com
обсуждение исходный текст
Ответ на Re: What version of JUnit, again?  (Sehrope Sarkuni <sehrope@jackdb.com>)
Ответы Re: What version of JUnit, again?
Список pgsql-jdbc
Well, that's confusing to me also as AFAIK at no time have I ever set a CLASSPATH environment variable.  But, no matter.  That worked. 

Is it possible that the pgjdbc build.xml file and/or the compilation docs need a little spruced up?  Not that it's a big deal.

Thanks,
David


On Sun, Aug 3, 2014 at 6:32 PM, Sehrope Sarkuni <sehrope@jackdb.com> wrote:
I think that might be ant not respecting the CLASSPATH environment
variable. You might have to specify it explicitly when you run ant
instead.

Try running it like this:

$ ant -lib lib:/usr/share/java/junit4.jar test

Regards,
Sehrope Sarkuni
Founder & CEO | JackDB, Inc. | http://www.jackdb.com/

On Sun, Aug 3, 2014 at 9:00 PM, David Ventimiglia <dventimi@gmail.com> wrote:
> Spoke too soon.  That produced a different error with your test (see below).
>
> Testsuite: org.postgresql.test.ssl.SingleCertValidatingFactoryTest
> Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0 sec
>
> Null Test:     Caused an ERROR
> junit/framework/JUnit4TestAdapterCache
> java.lang.NoClassDefFoundError: junit/framework/JUnit4TestAdapterCache
>     at java.lang.ClassLoader.defineClass1(Native Method)
>     at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
>     at
> java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
>     at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
>     at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
>     at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
>     at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
>     at java.security.AccessController.doPrivileged(Native Method)
>     at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
>     at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
>     at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
>     at java.lang.Class.forName0(Native Method)
>     at java.lang.Class.forName(Class.java:190)
>     at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
>     at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
>     at java.security.AccessController.doPrivileged(Native Method)
>     at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
>     at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
>     at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
>
>
>
> On Sun, Aug 3, 2014 at 5:55 PM, David Ventimiglia <dventimi@gmail.com>
> wrote:
>>
>> Indeed.  The JUnit4 jar seems to include the old-style JUnit packages.
>> Since I also have JUnit4 in my Maven repository, then in the build.xml file
>> for the pgjdbc project, I changed it to use JUnit version="4.0" instead of
>> version="3.8.2" and it worked fine (see patch below).
>>
>> diff --git a/build.xml b/build.xml
>> index 9ce437d..956fb9c 100644
>> --- a/build.xml
>> +++ b/build.xml
>> @@ -108,7 +108,7 @@
>>    </patternset>
>>
>>
>>    <artifact:dependencies pathId="dependency.classpath" useScope="test">
>> -    <dependency groupId="junit" artifactId="junit" version="3.8.2"
>> scope="test"/>
>> +    <dependency groupId="junit" artifactId="junit" version="4.0"
>> scope="test"/>
>>    </artifact:dependencies>
>>
>>    <target name="check_versions">
>>
>>
>>
>> On Sun, Aug 3, 2014 at 5:46 PM, Sehrope Sarkuni <sehrope@jackdb.com>
>> wrote:
>>>
>>> The original unit tests use only junit 3.8.
>>>
>>> I wrote the newer SSL tests for the SingleCertValidatingFactory to use
>>> the newer version of junit (and using annotations etc) as the expectation
>>> was that it's only included in a JDBC 4/JDK5+ environment.
>>>
>>> I'll see if I can dig up my local config for running it when I get to my
>>> computer but I think I just used used the Ubuntu packages for junit 4 and
>>> manually add them to the CLASSPATH env variable.
>>>
>>> You should be able to run the original tests with just the newer junit on
>>> the CLASSPATH.
>>>
>>> You might also want to take a peek at:
>>> https://github.com/jackdb/pgjdbc-test-vm
>>>
>>> It's what I originally used to test the SSL factory patches. It sets up a
>>> bunch of PG servers in a VM with know SSL configurations and users for
>>> testing. It can also be used for testing the rest of the driver.
>>>
>>> Regards,
>>> Sehrope Sarkuni
>>> Founder & CEO | JackDB, Inc. | http://www.jackdb.com/
>>>
>>> On Aug 3, 2014, at 8:32 PM, David Ventimiglia <dventimi@gmail.com> wrote:
>>>
>>> I have no CLASSPATH environment variable.  As for the classpath that is
>>> used by Ant, it's my assumption that's handled by Ant and/or Maven.  What I
>>> can tell you are these things.
>>>
>>> I'm on Ubuntu Linux, a Debian-based distro, where typically I install
>>> things using the package manager rather than by direct download.
>>> Therefore, I've both JUnit (3.8.2) and JUnit4 (4.0.0) "installed"
>>> courtesy of the apt-get package manager.  But they're not on any CLASSPATH
>>> and Ant and Maven were unaware of them.
>>> Within the pgjdbc project, I ran `ant' as instructed.  That failed,
>>> because the build.xml file has a dependency on JUnit 3.8.2.
>>> Helpfully, the Ant build error included instructions for how to satisfy
>>> the JUnit dependency (see below).  I found the JUnit 3.8.2 JAR file that
>>> apt-get had installed on my system and fed that path into the Maven command.
>>> Ran `ant' again.  This time, because the JUnit dependency had been
>>> satisfied, it successfully built the JDBC driver.  But because it didn't run
>>> any tests, it didn't trigger any run-time error.
>>> Ran `ant test' and got the errors that I sent you.
>>> Noticed that the SingleCertValidatingFactoryTest class (if nothing else)
>>> imports from org.junit, which I understood to be a JUnit4 package (but maybe
>>> I'm wrong).
>>> I became confused.
>>>
>>> The Maven command to install the JUnit jar was:
>>>
>>>     mvn install:install-file -DgroupId=junit -DartifactId=junit
>>> -Dversion=3.8.2 -Dpackaging=jar -Dfile=/usr/share/java/junit-3.8.2.jar
>>>
>>> I assure you that the jar file is a bona fide JUnit 3.8.2 jar file.
>>>
>>>
>>>
>>> On Sun, Aug 3, 2014 at 5:19 PM, Dave Cramer <pg@fastcrypt.com> wrote:
>>>>
>>>> Is junit on the classpath ?
>>>>
>>>>
>>>>
>>>> Dave Cramer
>>>>
>>>> dave.cramer(at)credativ(dot)ca
>>>> http://www.credativ.ca
>>>>
>>>>
>>>> On 3 August 2014 20:15, David Ventimiglia <dventimi@gmail.com> wrote:
>>>>>
>>>>> You bet.  They're in the attached errors.txt file and also pasted in
>>>>> below.
>>>>>
>>>>> Buildfile: /home/dventimi/work/pgjdbc/build.xml
>>>>>
>>>>> prepare:
>>>>>
>>>>> check_versions:
>>>>>
>>>>> check_driver:
>>>>>
>>>>> driver:
>>>>>
>>>>> compile:
>>>>>     [javac] /home/dventimi/work/pgjdbc/build.xml:243: warning:
>>>>> 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set
>>>>> to false for repeatable builds
>>>>>
>>>>> artifact-version:
>>>>>      [echo] Artifact version string: postgresql-9.4-1200.jdbc41
>>>>>
>>>>> jar:
>>>>>
>>>>> testjar:
>>>>>     [mkdir] Created dir: /home/dventimi/work/pgjdbc/build/tests
>>>>>     [javac] /home/dventimi/work/pgjdbc/build.xml:451: warning:
>>>>> 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set
>>>>> to false for repeatable builds
>>>>>     [javac] Compiling 84 source files to
>>>>> /home/dventimi/work/pgjdbc/build/tests
>>>>>     [javac]
>>>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:3:
>>>>> error: package org.junit does not exist
>>>>>     [javac] import org.junit.Assert;
>>>>>     [javac]                 ^
>>>>>     [javac]
>>>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:4:
>>>>> error: package org.junit does not exist
>>>>>     [javac] import org.junit.Test;
>>>>>     [javac]                 ^
>>>>>     [javac]
>>>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:5:
>>>>> error: package org.junit does not exist
>>>>>     [javac] import org.junit.Before;
>>>>>     [javac]                 ^
>>>>>     [javac]
>>>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:6:
>>>>> error: package org.junit does not exist
>>>>>     [javac] import org.junit.BeforeClass;
>>>>>     [javac]                 ^
>>>>>     [javac]
>>>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:7:
>>>>> error: package org.junit.runners does not exist
>>>>>     [javac] import org.junit.runners.Parameterized;
>>>>>     [javac]                         ^
>>>>>     [javac]
>>>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:8:
>>>>> error: package org.junit.runners.Parameterized does not exist
>>>>>     [javac] import org.junit.runners.Parameterized.Parameters;
>>>>>     [javac]                                       ^
>>>>>     [javac]
>>>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:9:
>>>>> error: package org.junit.runner does not exist
>>>>>     [javac] import org.junit.runner.RunWith;
>>>>>     [javac]                        ^
>>>>>     [javac]
>>>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:23:
>>>>> error: cannot find symbol
>>>>>     [javac] @RunWith(Parameterized.class)
>>>>>     [javac]  ^
>>>>>     [javac]   symbol: class RunWith
>>>>>     [javac]
>>>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:42:
>>>>> error: cannot find symbol
>>>>>     [javac]     @Parameters
>>>>>     [javac]      ^
>>>>>     [javac]   symbol:   class Parameters
>>>>>     [javac]   location: class SingleCertValidatingFactoryTest
>>>>>     [javac]
>>>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:181:
>>>>> error: cannot find symbol
>>>>>     [javac]     @Test
>>>>>     [javac]      ^
>>>>>     [javac]   symbol:   class Test
>>>>>     [javac]   location: class SingleCertValidatingFactoryTest
>>>>>     [javac]
>>>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:203:
>>>>> error: cannot find symbol
>>>>>     [javac]     @Test
>>>>>     [javac]      ^
>>>>>     [javac]   symbol:   class Test
>>>>>     [javac]   location: class SingleCertValidatingFactoryTest
>>>>>     [javac]
>>>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:213:
>>>>> error: cannot find symbol
>>>>>     [javac]     @Test
>>>>>     [javac]      ^
>>>>>     [javac]   symbol:   class Test
>>>>>     [javac]   location: class SingleCertValidatingFactoryTest
>>>>>     [javac]
>>>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:223:
>>>>> error: cannot find symbol
>>>>>     [javac]     @Test
>>>>>     [javac]      ^
>>>>>     [javac]   symbol:   class Test
>>>>>     [javac]   location: class SingleCertValidatingFactoryTest
>>>>>     [javac]
>>>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:240:
>>>>> error: cannot find symbol
>>>>>     [javac]     @Test
>>>>>     [javac]      ^
>>>>>     [javac]   symbol:   class Test
>>>>>     [javac]   location: class SingleCertValidatingFactoryTest
>>>>>     [javac]
>>>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:257:
>>>>> error: cannot find symbol
>>>>>     [javac]     @Test
>>>>>     [javac]      ^
>>>>>     [javac]   symbol:   class Test
>>>>>     [javac]   location: class SingleCertValidatingFactoryTest
>>>>>     [javac]
>>>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:274:
>>>>> error: cannot find symbol
>>>>>     [javac]     @Test
>>>>>     [javac]      ^
>>>>>     [javac]   symbol:   class Test
>>>>>     [javac]   location: class SingleCertValidatingFactoryTest
>>>>>     [javac]
>>>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:307:
>>>>> error: cannot find symbol
>>>>>     [javac]     @Test
>>>>>     [javac]      ^
>>>>>     [javac]   symbol:   class Test
>>>>>     [javac]   location: class SingleCertValidatingFactoryTest
>>>>>     [javac]
>>>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:327:
>>>>> error: cannot find symbol
>>>>>     [javac]     @Test
>>>>>     [javac]      ^
>>>>>     [javac]   symbol:   class Test
>>>>>     [javac]   location: class SingleCertValidatingFactoryTest
>>>>>     [javac]
>>>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:351:
>>>>> error: cannot find symbol
>>>>>     [javac]     @Test
>>>>>     [javac]      ^
>>>>>     [javac]   symbol:   class Test
>>>>>     [javac]   location: class SingleCertValidatingFactoryTest
>>>>>     [javac]
>>>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:141:
>>>>> error: cannot find symbol
>>>>>     [javac]             Assert.assertEquals(1, rs.getInt(1));
>>>>>     [javac]             ^
>>>>>     [javac]   symbol:   variable Assert
>>>>>     [javac]   location: class SingleCertValidatingFactoryTest
>>>>>     [javac]
>>>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:147:
>>>>> error: cannot find symbol
>>>>>     [javac]             Assert.assertEquals(sslExpected, sslActual);
>>>>>     [javac]             ^
>>>>>     [javac]   symbol:   variable Assert
>>>>>     [javac]   location: class SingleCertValidatingFactoryTest
>>>>>     [javac]
>>>>> /home/dventimi/work/pgjdbc/org/postgresql/test/ssl/SingleCertValidatingFactoryTest.java:172:
>>>>> error: cannot find symbol
>>>>>     [javac]             Assert.fail("Expected exception " +
>>>>> expectedThrowable.getName() + " but it did not occur.");
>>>>>     [javac]             ^
>>>>>     [javac]   symbol:   variable Assert
>>>>>     [javac]   location: class SingleCertValidatingFactoryTest
>>>>>     [javac] Note: Some input files use or override a deprecated API.
>>>>>     [javac] Note: Recompile with -Xlint:deprecation for details.
>>>>>     [javac] Note: Some input files use unchecked or unsafe operations.
>>>>>     [javac] Note: Recompile with -Xlint:unchecked for details.
>>>>>     [javac] 22 errors
>>>>>
>>>>> BUILD FAILED
>>>>> /home/dventimi/work/pgjdbc/build.xml:451: Compile failed; see the
>>>>> compiler error output for details.
>>>>>
>>>>> Total time: 12 seconds
>>>>>
>>>>>
>>>>>
>>>>> On Sun, Aug 3, 2014 at 5:07 PM, Dave Cramer <pg@fastcrypt.com> wrote:
>>>>>>
>>>>>> Pretty sure I use 3.8.2
>>>>>>
>>>>>> Can you provide me with the errors you are getting ?
>>>>>>
>>>>>> Dave Cramer
>>>>>>
>>>>>> dave.cramer(at)credativ(dot)ca
>>>>>> http://www.credativ.ca
>>>>>>
>>>>>>
>>>>>> On 3 August 2014 16:53, David Ventimiglia <dventimi@gmail.com> wrote:
>>>>>>>
>>>>>>> Hi,
>>>>>>>
>>>>>>> I'm a little confused as to what version of JUnit I'm supposed to be
>>>>>>> using in order to build/test the Postgresql JDBC driver.  This page says
>>>>>>> that "JUnit at least 3.7 is needed."
>>>>>>>
>>>>>>> http://jdbc.postgresql.org/development/development.html
>>>>>>>
>>>>>>> But, there's a big between JUnit 3.8 and earlier and JUnit 4.  The
>>>>>>> former has components in packages junit.framework while the latter has
>>>>>>> components in org.junit and so test that directly import on or the other of
>>>>>>> those packages are sensitive to the version of JUnit you're using.
>>>>>>>
>>>>>>> An example of such a test is SingleCertValidatingFactoryTest.java in
>>>>>>> pgjdbc/org/postgresql/test/ssl directory (presumably other tests are like
>>>>>>> this).
>>>>>>>
>>>>>>> On the other hand, the pgjdbc Ant build.xml file specifies JUnit
>>>>>>> 3.8.2.:
>>>>>>>
>>>>>>>   <artifact:dependencies pathId="dependency.classpath"
>>>>>>> useScope="test">
>>>>>>>     <dependency groupId="junit" artifactId="junit" version="3.8.2"
>>>>>>> scope="test"/>
>>>>>>>   </artifact:dependencies>
>>>>>>>
>>>>>>> Presumably, this is why running `ant test' in pgjdbc fails for me
>>>>>>> with compilation errors.  I confess, I'm not an expert with Ant and Maven,
>>>>>>> so maybe I've done something wrong.  But, exactly waht version of JUnit
>>>>>>> should I be using?  Thanks!
>>>>>>>
>>>>>>> Best,
>>>>>>> David Ventimiglia
>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>

В списке pgsql-jdbc по дате отправления:

Предыдущее
От: Dave Cramer
Дата:
Сообщение: Re: What version of JUnit, again?
Следующее
От: Dave Cramer
Дата:
Сообщение: Re: What version of JUnit, again?