通过 JUNIT 运行程序时如何打印值(用于调试)

阿尔忒弥斯

我想作为序言说我精通 python 但只对 java 略有了解,几乎不了解 JUNT

在 python 中调试时,我通常会print输出我认为可能是错误的值,当通过 JUNIT 运行脚本时,我将如何在 java 中执行此操作?

更具体地说,我有一种方法可以将map某个字符串中的符号添加到 a 中,并且如果它们出现不止一次valuekey中的map就会递增。

static Map<Character, Double> getCharFrequancies(String text){
    Map<Character, Double> myMap = new HashMap<Character, Double>();
    int len = (text.length())/2;
    for(int i = text.length() - 1; i>=0; --i) { 
        char symbol = text.charAt(i);
        if(myMap.containsKey(symbol)){
            myMap.put(symbol, myMap.get(symbol)+(1/len));
        }
        else {
            myMap.put(symbol, (double) 1);
        }

    }

    return myMap;
}

和测试脚本:

public void testGetCharFrequancies() {
    Map<Character,Double> expectedMap = new HashMap<Character,Double>();
    String text = "aa, b ccc.";
    expectedMap.put('a', 2/10.0);
    expectedMap.put(' ', 2/10.0);
    expectedMap.put(',', 1/10.0);
    expectedMap.put('b', 1/10.0);
    expectedMap.put('c', 3/10.0);
    expectedMap.put('.', 1/10.0);

    Map<Character,Double> actualMap = HuffmanTree.getCharFrequancies(text);
    assertEquals(expectedMap.size(), actualMap.size());
    assertEquals(expectedMap.keySet(), actualMap.keySet());
    for(Character c:expectedMap.keySet()){
        assertEquals(expectedMap.get(c), actualMap.get(c), 0.000000000001);

该故障是在发生的事情assertEquals(expectedMap.get(c), actualMap.get(c), 0.000000000001); ,所以我想打印出来valuesmap我该怎么做?

附:我正在使用日食氧气

达菲莫

我建议您在方法中按如下所示编写它getCharFrequencies熟悉 JDK 8 中的新 lambda 会很好

package utils;

import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import java.util.stream.Collectors;

/**
 * @author Michael
 * @link https://stackoverflow.com/questions/41006856/how-do-i-catch-a-nosuchelementexception?noredirect=1#comment69222264_41006856
 */
public class StringUtils {

    private StringUtils() {}

    public static List<String> tokenize(String str) {
        String [] tokens = new String[0];
        if (isNotBlankOrNull(str)) {
            str = str.trim();
            tokens = str.split("\\s+");
        }
        return Arrays.asList(tokens);
    }

    public static boolean isBlankOrNull(String s) {
        return ((s == null) || (s.trim().length() == 0));
    }

    public static boolean isNotBlankOrNull(String s) {
        return !isBlankOrNull(s);
    }

    public static boolean hasSufficientTokens(int numTokens, String str) {
        return (numTokens >= 0) && tokenize(str).size() >= numTokens;
    }

    public static Map<String, Long> getCharFrequencies(String text) {
        Map<String, Long> charFrequencies = new TreeMap<>();
        if (isNotBlankOrNull(text)) {
            // https://stackoverflow.com/questions/4363665/hashmap-implementation-to-count-the-occurences-of-each-character
            charFrequencies = Arrays.stream(text.split("")).collect(Collectors.groupingBy(c -> c, Collectors.counting()));
        }
        return charFrequencies;
    }
}

这是证明它有效的 JUnit 测试:

package utils;

import org.junit.Assert;
import org.junit.Test;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;

/**
 * Created by Michael
 * Creation date 12/6/2016.
 * @link https://stackoverflow.com/questions/41006856/how-do-i-catch-a-nosuchelementexception?noredirect=1#comment69222264_41006856
 */
public class StringUtilsTest {

    @Test
    public void testIsNotBlankOrNull_NullString() {
        Assert.assertFalse(StringUtils.isNotBlankOrNull(null));
    }

    @Test
    public void testIsNotBlankOrNull_EmptyString() {
        Assert.assertFalse(StringUtils.isNotBlankOrNull(""));
    }

    @Test
    public void testIsNotBlankOrNull_BlankString() {
        Assert.assertFalse(StringUtils.isNotBlankOrNull("        "));
    }

    @Test
    public void testIsNotBlankOrNull_FullString() {
        Assert.assertTrue(StringUtils.isNotBlankOrNull("I'm not null, blank, or empty"));
    }

    @Test
    public void testTokenize_NullString() {
        // setup
        List<String> expected = Collections.EMPTY_LIST;
        // exercise
        List<String> actual = StringUtils.tokenize(null);
        // assert
        Assert.assertEquals(expected, actual);
    }

    @Test
    public void testTokenize_EmptyString() {
        // setup
        List<String> expected = Collections.EMPTY_LIST;
        // exercise
        List<String> actual = StringUtils.tokenize("");
        // assert
        Assert.assertEquals(expected, actual);
    }

    @Test
    public void testTokenize_BlankString() {
        // setup
        List<String> expected = Collections.EMPTY_LIST;
        // exercise
        List<String> actual = StringUtils.tokenize("        ");
        // assert
        Assert.assertEquals(expected, actual);
    }

    @Test
    public void testTokenize_FullString() {
        // setup
        List<String> expected = Arrays.asList("I'm", "not", "null,", "blank,", "or", "empty");
        // exercise
        List<String> actual = StringUtils.tokenize("    I'm not     null,    blank, or empty    ");
        // assert
        Assert.assertEquals(expected.size(), actual.size());
        Assert.assertEquals(expected, actual);
    }

    @Test
    public void hasSufficientTokens_NegativeTokens() {
        // setup
        int numTokens = -1;
        String str = "    I'm not     null,    blank, or empty    ";
        // exercise
        // assert
        Assert.assertFalse(StringUtils.hasSufficientTokens(numTokens, str));
    }

    @Test
    public void hasSufficientTokens_InsufficientTokens() {
        // setup
        String str = "    I'm not     null,    blank, or empty    ";
        int numTokens = StringUtils.tokenize(str).size() + 1;
        // exercise
        // assert
        Assert.assertFalse(StringUtils.hasSufficientTokens(numTokens, str));
    }

    @Test
    public void hasSufficientTokens_NullString() {
        // setup
        String str = "";
        int numTokens = StringUtils.tokenize(str).size();
        // exercise
        // assert
        Assert.assertTrue(StringUtils.hasSufficientTokens(numTokens, str));
    }

    @Test
    public void hasSufficientTokens_Success() {
        // setup
        String str = "    I'm not     null,    blank, or empty    ";
        int numTokens = StringUtils.tokenize(str).size();
        // exercise
        // assert
        Assert.assertTrue(StringUtils.hasSufficientTokens(numTokens, str));
    }

    @Test
    public void testGetCharFrequencies_NullText() {
        // setup
        String text = null;
        Map<String, Long> expected = new TreeMap<>();
        // exercise
        Map<String, Long> actual = StringUtils.getCharFrequencies(text);
        // assert
        Assert.assertEquals(expected, actual);
    }

    @Test
    public void testGetCharFrequencies_BlankText() {
        // setup
        String text = "        ";
        Map<String, Long> expected = new TreeMap<>();
        // exercise
        Map<String, Long> actual = StringUtils.getCharFrequencies(text);
        // assert
        Assert.assertEquals(expected, actual);
    }

    @Test
    public void testGetCharFrequencies_Success() {
        // setup
        String text = "The quick brown fox jumped over the lazy dog!        ";
        String expectedString = "{T=1,  =16, !=1, a=1, b=1, c=1, d=2, e=4, f=1, g=1, h=2, i=1, j=1, k=1, l=1, m=1, n=1, o=4, p=1, q=1, r=2, t=1, u=2, v=1, w=1, x=1, y=1, z=1}";
        // exercise
        Map<String, Long> actual = StringUtils.getCharFrequencies(text);
        // assert
        Assert.assertEquals(expectedString, actual.toString());
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Mavenising WebSphere / BPM测试并通过JUnit运行

来自分类Dev

如何通过JUnit覆盖块捕获

来自分类Dev

如何使用SOAPUI通过JUNIT获得响应

来自分类Dev

如何通过Gradle测试任务在JUnit上启用调试

来自分类Dev

如何运行通过工厂方法创建的(JUnit)TestSuite?

来自分类Dev

Maven测试构建失败,但JUnit运行器测试通过?

来自分类Dev

通过命令行运行Junit Test

来自分类Dev

无法通过Eclipse在Ant上运行简单的JUnit测试

来自分类Dev

如何通过Tor运行程序

来自分类Dev

如何通过Junit和timeout获得成功?

来自分类Dev

如何通过内置JUnit测试自动连接服务

来自分类Dev

如何使用扫描仪通过JUnit测试方法?

来自分类Dev

如何在junit期间通过StringResourceModel访问text_resources

来自分类Dev

如何通过Junit测试该默认构造函数?

来自分类Dev

junit失败,但通过maven命令行运行时通过

来自分类Dev

如何使用Jupiter Junit5平台的老式引擎通过gradle配置按类别运行JUnit4测试

来自分类Dev

通过外壳运行程序

来自分类Dev

无法通过休眠的uniqueConstraintException通过junit测试

来自分类Dev

我能够通过ant build.xml编译JUnit程序,但是在执行该程序时却遇到了NoClassFounder异常

来自分类Dev

如何通过gradle在特定文件夹中运行jUnit测试?

来自分类Dev

如何通过appveyor.yml在后台运行程序?

来自分类Dev

如何通过SSH远程运行程序但在本地显示

来自分类Dev

通过 IntelliJ 2019 的“创建测试”功能重新定义用于创建 JUnit 5 类的模板

来自分类Dev

从命令行通过依赖项运行JUnit5

来自分类Dev

没有生成报告,如果我通过Maven运行我的测试用例(JUnit)?

来自分类Dev

如何在模拟请求上通过JUnit4测试Spring的el-Expressions?

来自分类Dev

JUnit为什么/如何通过带有编译器错误的测试?

来自分类Dev

如何通过Appium JUnit测试监视iOS模拟器/ Android模拟器的HTTP流量?

来自分类Dev

如何通过失败的JUnit4测试使`groovy`命令退出不为零?

Related 相关文章

  1. 1

    Mavenising WebSphere / BPM测试并通过JUnit运行

  2. 2

    如何通过JUnit覆盖块捕获

  3. 3

    如何使用SOAPUI通过JUNIT获得响应

  4. 4

    如何通过Gradle测试任务在JUnit上启用调试

  5. 5

    如何运行通过工厂方法创建的(JUnit)TestSuite?

  6. 6

    Maven测试构建失败,但JUnit运行器测试通过?

  7. 7

    通过命令行运行Junit Test

  8. 8

    无法通过Eclipse在Ant上运行简单的JUnit测试

  9. 9

    如何通过Tor运行程序

  10. 10

    如何通过Junit和timeout获得成功?

  11. 11

    如何通过内置JUnit测试自动连接服务

  12. 12

    如何使用扫描仪通过JUnit测试方法?

  13. 13

    如何在junit期间通过StringResourceModel访问text_resources

  14. 14

    如何通过Junit测试该默认构造函数?

  15. 15

    junit失败,但通过maven命令行运行时通过

  16. 16

    如何使用Jupiter Junit5平台的老式引擎通过gradle配置按类别运行JUnit4测试

  17. 17

    通过外壳运行程序

  18. 18

    无法通过休眠的uniqueConstraintException通过junit测试

  19. 19

    我能够通过ant build.xml编译JUnit程序,但是在执行该程序时却遇到了NoClassFounder异常

  20. 20

    如何通过gradle在特定文件夹中运行jUnit测试?

  21. 21

    如何通过appveyor.yml在后台运行程序?

  22. 22

    如何通过SSH远程运行程序但在本地显示

  23. 23

    通过 IntelliJ 2019 的“创建测试”功能重新定义用于创建 JUnit 5 类的模板

  24. 24

    从命令行通过依赖项运行JUnit5

  25. 25

    没有生成报告,如果我通过Maven运行我的测试用例(JUnit)?

  26. 26

    如何在模拟请求上通过JUnit4测试Spring的el-Expressions?

  27. 27

    JUnit为什么/如何通过带有编译器错误的测试?

  28. 28

    如何通过Appium JUnit测试监视iOS模拟器/ Android模拟器的HTTP流量?

  29. 29

    如何通过失败的JUnit4测试使`groovy`命令退出不为零?

热门标签

归档